Mit QProcess ein Prozess im Hintergrund laufen lassen

Alles rund um die Programmierung mit Qt
Antworten
tec_1
Beiträge: 17
Registriert: 15. Dezember 2009 16:57

Mit QProcess ein Prozess im Hintergrund laufen lassen

Beitrag 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
Burgpflanze
Beiträge: 89
Registriert: 24. Februar 2006 16:41
Wohnort: Dresden

Beitrag von Burgpflanze »

Was spricht dagegen, das QProcess-Objekt solange am Leben zu halten?
Gruß, Peter
tec_1
Beiträge: 17
Registriert: 15. Dezember 2009 16:57

Beitrag 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.
Burgpflanze
Beiträge: 89
Registriert: 24. Februar 2006 16:41
Wohnort: Dresden

Beitrag von Burgpflanze »

Ich habs eben mit QProcess::startDetached gestestet, bei mir öffnet sich keine Konsole unter Windows.
Gruß, Peter
tec_1
Beiträge: 17
Registriert: 15. Dezember 2009 16:57

Beitrag 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.
Burgpflanze
Beiträge: 89
Registriert: 24. Februar 2006 16:41
Wohnort: Dresden

Beitrag von Burgpflanze »

GUI-Projekt, aus dem QtCreator heraus gestartet.
Gruß, Peter
tec_1
Beiträge: 17
Registriert: 15. Dezember 2009 16:57

Beitrag 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.
Ivanhoe
Beiträge: 6
Registriert: 9. August 2008 15:28

Beitrag 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
tec_1
Beiträge: 17
Registriert: 15. Dezember 2009 16:57

Beitrag von tec_1 »

Das wäre eine Möglichkeit. Mit QT-Mitteln wäre es aber am schönsten :-)
tec_1
Beiträge: 17
Registriert: 15. Dezember 2009 16:57

Beitrag von tec_1 »

Gut, ich habe es jetzt mit "CreateProcess" und dem Parameter "DETACHED_PROCESS" gelöst, funktioniert so wie gewollt.
Antworten