ich schreibe Gerade ein Programm, welches ein anderes Programm aufruft und habe das Problem, dass es sich unter Windows so verhällt wie erwartet und unter Linux beendet sich das aufgerufene Programm ebenfalls wenn das aufrufende beendet wird.
Man erstelle 2 Programme "caller" und "called". Das Programm caller ruft called auf und zwar mit folgendem code:
Code: Alles auswählen
Procedure TForm1.Button1Click(Sender: TObject);
Var
p: TProcessUTF8;
t: int64;
Begin
//ExecuteProcess();
p := TProcessUTF8.Create(Nil);
p.CurrentDirectory := IncludeTrailingPathDelimiter(ExtractFilePath(ParamStr(0)));
p.Executable := 'called';
p.Parameters.Add('workdir=/dev/test');
p.Parameters.Add('blubber=/dev/test/bla');
p.Options := [];
p.Execute;
t := GetTickCount64;
While t + 5000 > GetTickCount64 Do Begin
Application.ProcessMessages;
End;
// p.free;
close;
End;
Sobald caller sich schließt wird called unter linux ebenfalls beendet, unter windows bleibt called aktiv.
Hat jemand eine Ahnung was ich hier anders machen muss ?