Seite 1 von 1

QProcess liefert falsche ProzessID

Verfasst: 25. August 2010 14:01
von BartSimpson
Hallo ich habe folgendes Problem:

Code: Alles auswählen

qint64 ID;
QStringList Liste;
Liste<<"eth0";
QProcess::startDetached("dhclient",Liste,&ID);
qDebug()<<ID;
Die ProzessID die ich von dem dhclient Prozess bekomme ist an der Stelle eine ganz andere als wenn ich mir diese per "ps ax" ausgeben lasse. Ich benötige diese aber später. Hat jemand eine Erklärung hierfür?

Verfasst: 25. August 2010 14:45
von franzf
Diese Überladung kenn ich gar nicht :P
Hast du wahrscheinlich nur das WorkingDirectory vergessen.
Aus der Doku:
If the function is successful then *pid is set to the process identifier of the started process.
Kannst du dir mal den return ausgeben lassen?
Und zu Testzwecken dein ID korrekt mit 0 initialisieren, damit du siehst ob überhaupt ID gesetzt wird. Denn Defaultinitialisierung muss nicht "0" sein.

Verfasst: 25. August 2010 15:25
von BartSimpson
Das Workingdir ist einfach auf QString() gesetzt, da nicht benötig wird:))
der witz ist, man bekommt false zurück obwohl der Prozess gestartet worden ist.
Sehr merkwürdig.

Verfasst: 25. August 2010 21:57
von scn
Wird false zurückgeliefert, konnte das Programm nicht gestartet werden und dann wird auch ID nicht belegt. Den Wert den du ausliest ist ein zufälliger Wert, da du die Variable nicht initialisiert hast (siehe hierzu auch Anmerkung von franzf).

Ich vermute einen anderen Fehler. dhclient wird nur im WorkingDirectory gesucht, also bei dir wg. QString() im aktuellen Verzeichnis. Eine Suche über die PATH-Variable, wie in der Shell gibt es hier nicht. Gib also als Programm statt "dhclient" den vollständigen Pfad zum Programm also z.B. "/sbin/dhclient" an. Jetzt sollte startDetached auch true zurückliefern und dann auch die Process ID liefern.