[gelöst] QProcess richtig beenden. Wie?

Alles rund um die Programmierung mit Qt
Antworten
samir_bmw
Beiträge: 41
Registriert: 11. Juli 2008 16:51

[gelöst] QProcess richtig beenden. Wie?

Beitrag 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
Zuletzt geändert von samir_bmw am 21. Oktober 2010 09:21, insgesamt 1-mal geändert.
pfid
Beiträge: 535
Registriert: 22. Februar 2008 16:59

Beitrag 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.
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

Ist für dich QProcess::terminate() eine Alternative?
Auf welcher Plattform bist du denn unterwegs? Wie sieht dein Code aus?
samir_bmw
Beiträge: 41
Registriert: 11. Juli 2008 16:51

Beitrag 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.
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

Kann es sein, dass dein Prozess den scope nicht überlebt? Deshalb auch die Frage nach Code.
solarix
Beiträge: 1133
Registriert: 7. Juni 2007 19:25

Beitrag 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..
samir_bmw
Beiträge: 41
Registriert: 11. Juli 2008 16:51

Beitrag 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.
solarix
Beiträge: 1133
Registriert: 7. Juni 2007 19:25

Beitrag 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..
Antworten