Anderes Qt-Programm geordnet beenden

Alles rund um die Programmierung mit Qt
Antworten
LonelyPixel
Beiträge: 23
Registriert: 5. Juli 2008 23:21

Anderes Qt-Programm geordnet beenden

Beitrag von LonelyPixel »

Hallo,

ich habe ein Qt-Programm, das mithilfe von QProcess ein anderes Qt-Programm startet und überwacht. Wenn es nicht mehr benötigt wird, soll das zweite Programm geordnet beendet werden. Dafür habe ich im 2. Programm für das Ereignis "public slot onAboutToQuit()" etwas Aufräumcode geschrieben. Der soll natürlich auch aufgerufen werden.

Wenn ich nun den mit QProcess gestarteten 2. Prozess beenden will, kann ich ja terminate() oder kill() aufrufen. In beiden Fällen wird der Aufräumcode aber nicht ausgeführt und der Prozess endet gleich. terminate sendet wohl das SIGTERM-Signal und kill das SIGKILL-Signal. Aber anscheinend brauche ich sowas wie das SIGQUIT-Signal, damit das funktioniert, oder?

Wie bekomme ich das hin, dass ich den Prozess beenden kann, er aber nicht sofort aufhört sondern vorher noch aufräumt?
pfid
Beiträge: 535
Registriert: 22. Februar 2008 16:59

Beitrag von pfid »

Naja, wenn du eh unter Unix unterwegs bist, melde halt nen Handler für SIGTERM an, und ruf da QApplication::quit() auf.
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Wenn du eh beide Applikationen entwickelst und über QProcess startest könnten ja beide Applikation über stdin/stdout kommunizieren.
RavenIV
Beiträge: 267
Registriert: 21. Januar 2009 14:24
Wohnort: Waldshut

Beitrag von RavenIV »

QProcess::kill() ist auf jeden Fall falsche, wenn das Programm noch etwas machen soll. Hier wird es abgeschossen.

QProcess::terminate() schickt eine WM_CLOSE-Nachricht an das Programm. Dieses muss natürlich darauf reagieren.
Linux, das längste Text-Adventure aller Zeiten
Antworten