Einzelnen Beitrag anzeigen

Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

Pipes zu mehreren Anwendungen gleichzeitig

  Alt 11. Sep 2008, 16:14
Hi,

Ich versuche gerade mehrere Pipes zu mehreren Anwendungen parallel zu betreiben. Genauer starte ich ein Programm einige male und will zu jeder Instanz Pipes haben.

In der Theorie funktioniert das bei mir. Allerdings verliere ich die Verbindung zu den Pipes der 1. Anwendung wenn ich die zweite mit Pipes starte.

Habe eine Klasse, mit einer Methode namens Execute, die dieses Programm startet und Pipes zu dieser installiert. In Execute gibts dann eine While Schleife, die solange Daten bis der gestartete Prozess beendet wurde.

Ich poste mal meine Methode. Ist etwas gekürzt. Soll ja nur veranschaulichen wie ichs mache. Wenn weitere Informationen nötig sind, werde ich diese noch posten.

Delphi-Quellcode:
procedure TPipe.DoExecute;
var sui: TStartupInfo;
    pi: TProcessInformation;
begin
  // Pipes erstellen
  
  // StartupInfo einstellen

    CreateProcess(nil,PChar(cmdline),nil,nil,true,CREATE_DEFAULT_ERROR_MODE or PROFILE_USER or CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS,nil,nil,sui,pi);
    if pi.hProcess <> 0 then
    begin
      while WaitForSingleObject(pi.hProcess) <> WAIT_OBJECT_0 do
      begin
        ReadPipeData;
        Application.ProcessMessages;
        if FTerminate then
          TerminateProcess(pi.hProcess,Cardinal(-1));
      end;
    end;
end;
Das Problem ist eben, dass (scheinbar) die Schleife abbricht, bzw das DoExecute der ersten TPipe abgebrochen wird (?!) wenn eine zweite TPipe DoExecute ausführt. Ich erhalte keine Daten mehr. Die Verbindung scheint irgendwie abzubrechen. Ich aber nicht genau was geschieht. Das ist durch Debuggen nicht rauszufinden.

Muss man bei dem, was ich machen will irgendwas beachten oder mache ich sonst irgendwas falsch? Jedes TPipe(.DoExecute) für sich funktioniert wunderbar.

Es handelt sich übrigens um die plink.exe von Putty, falls diese Information wichtig sein sollte.

Gruß
Neutral General
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat