Seite 1 von 1

Anderes Qt-Programm geordnet beenden

Verfasst: 6. Oktober 2010 17:23
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?

Verfasst: 6. Oktober 2010 17:32
von pfid
Naja, wenn du eh unter Unix unterwegs bist, melde halt nen Handler für SIGTERM an, und ruf da QApplication::quit() auf.

Verfasst: 6. Oktober 2010 18:42
von upsala
Wenn du eh beide Applikationen entwickelst und über QProcess startest könnten ja beide Applikation über stdin/stdout kommunizieren.

Verfasst: 7. Oktober 2010 09:34
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.