Seite 1 von 1
Mit QProcess ein Prozess im Hintergrund laufen lassen
Verfasst: 15. Dezember 2009 18:38
von tec_1
Hallo,
ich möchte mit QProcess ein externes Programm starten, welches für unbestimmte Zeit im Hintergrund laufen soll. Wenn ich QProcess::startDetached(...); verwende funktioniert das zwar, aber unter Windows öffnet sich eine Konsole.
Wenn ich das Programm ganz normal mit einem QProcess-Objekt starte, dann lebt der Process nur so lange wie das Objekt, das Programm soll aber auf unbestimmte Zeit weiterleben.
Wie kann ich ein externes Programm ohne Konsole starten und dies für unbestimmte Zeit laufen lassen?
Viele Grüße
Verfasst: 15. Dezember 2009 19:02
von Burgpflanze
Was spricht dagegen, das QProcess-Objekt solange am Leben zu halten?
Verfasst: 15. Dezember 2009 22:39
von tec_1
Der Prozess welcher im Hintergrunf läuft benötigt längere Zeit um sich sebstständig "herunterzufahren". Das QT-Programm welches diesen Prozess gestartet hat soll ohne Verzögerung beendet werden. Ein "Abschießen" des Prozesses durch beenden des QT-Programmes soll auch vermieden werden.
Alles in allem führt kein Weg daran vorbei den Prozess unbemerkt im Hintergund für "unbestimmte" Zeit laufen zu lassen, ohne Konsole wie es bei QProzess::startDetached() unter Windows der Fall ist.
Verfasst: 16. Dezember 2009 00:47
von Burgpflanze
Ich habs eben mit QProcess::startDetached gestestet, bei mir öffnet sich keine Konsole unter Windows.
Verfasst: 16. Dezember 2009 09:25
von tec_1
Das ist merkwürdig. Evtl. hast du dein QT-Testprogramm sowieso in einer Konsole gestartet und so wird dann auch keine neue Konsole geöffnet?
Ich starte den Prozess aus einer GUI-Applikation heraus. Ich verwende QT 4.6 sowie Windows XP und Vista. Unter Linux erscheint keine Konsole. Der Prozess den ich starte ist ein Java-Programm mit einem laufenden ServerSocket.
Verfasst: 16. Dezember 2009 11:44
von Burgpflanze
GUI-Projekt, aus dem QtCreator heraus gestartet.
Verfasst: 16. Dezember 2009 12:26
von tec_1
Wahrscheinlich wird einfach die Konsole des QTCreator's verwendet. Das startDetached unter Windows eine Konsole öffnet ist aber bekannt.
Evtl. gibt es ja noch andere Möglichkeiten zum starten eines Prozesses ohne Konsole für unbestimmte Zeit.
Verfasst: 16. Dezember 2009 17:30
von Ivanhoe
tec_1 hat geschrieben:
Evtl. gibt es ja noch andere Möglichkeiten zum starten eines Prozesses ohne Konsole für unbestimmte Zeit.
Ja gibt es. Und zwar das von der win api bereitgestellt CREATEPROCESS. Da kann man dann als CreationFlag auch angeben das der Process detached starten soll.
http://msdn.microsoft.com/en-us/library ... 85%29.aspx
Verfasst: 17. Dezember 2009 17:10
von tec_1
Das wäre eine Möglichkeit. Mit QT-Mitteln wäre es aber am schönsten

Verfasst: 22. Dezember 2009 13:44
von tec_1
Gut, ich habe es jetzt mit "CreateProcess" und dem Parameter "DETACHED_PROCESS" gelöst, funktioniert so wie gewollt.