Seite 1 von 1
[gelöst] QProcess richtig beenden. Wie?
Verfasst: 20. Oktober 2010 11:58
von samir_bmw
Hallo Zusammen,
Ich habe seit ein paar Tagen das folgende Problem. Ich versuche ein QProcess, obwohl er noch nicht zu Ende gekommen ist, zu beenden. Wenn ich die Methode kill() benutze, bekomme ich folgende Meldung "QProcess: Destroyed while process is still running.". Wie kann ich den QProcess richtig beenden.
Gruss
Verfasst: 20. Oktober 2010 12:00
von pfid
terminate() ?
Ausserdem hört sich das eher so an, als ob du das QProcess Objekt zerstörst, während der Prozess noch läuft.
Verfasst: 20. Oktober 2010 12:03
von franzf
Ist für dich QProcess::terminate() eine Alternative?
Auf welcher Plattform bist du denn unterwegs? Wie sieht dein Code aus?
Verfasst: 20. Oktober 2010 12:16
von samir_bmw
hallo,
Ja, ich will den QProcess Objekt zerstörst, während der Prozess noch läuft. Wenn der QProcess 2 oder 3 min. noch braucht, will ich nicht so lange warten. Weil das Ergebnis brauche ich nicht mehr. Das Program läuft unter Linux.
Verfasst: 20. Oktober 2010 12:29
von franzf
Kann es sein, dass dein Prozess den scope nicht überlebt? Deshalb auch die Frage nach Code.
Verfasst: 20. Oktober 2010 12:38
von solarix
ich erledige das jeweils (trotz "kill" und "terminate") immer dynamisch:
Code: Alles auswählen
QProcess *p =........
connect(p, SIGNAL(finished(int,QProcess::ExitStatus)),
p, SLOT(deleteLater()));
...
hth..
Verfasst: 20. Oktober 2010 13:12
von samir_bmw
Hallo,
ich ahbe es versucht mit
Code: Alles auswählen
connect(p, SIGNAL(finished(int,QProcess::ExitStatus)), p, SLOT(deleteLater()));
und es funktioniert. Ich verstehe es leider nicht so gut, kannst du es bisschen erläutern. Und wird es am ende das QProcess Objekt gelöscht?
Danke.
Verfasst: 20. Oktober 2010 16:54
von solarix
naja.. im Grunde bedeutet dieses "connect(..)" ja einfach "mach-Selbstmord-sobald-du-fertig-bist". Gelöscht wird das Objekt (in deinem Fall der QProcess) dann im Eventloop.
Siehe dazu
http://doc.qt.nokia.com/4.7/qobject.html#deleteLater
hth..