PID vom Programm welches mit subprocess.Popen und kdesu gestartet wurde

08/04/2011 - 12:36 von P.S. | Report spam
Hallo,

ich startet in meinem Python-Skript ein GUI-Programm mittles
kdesu als ein anderer user:

import shlex, subprocess

p = subprocess.Popen(shlex.split("kdesu -u test programm"))

Wie bekomme ich nun die PID des Programmes raus. Ein p.pid liefert
mir die PID von kdesu. Ich brauche aber die PID des Kindprozesses
von kdesu.

Mein System: openSUSE 11.4 64-Bit, Python 2.7.

MfG
Pedro Santos
 

Lesen sie die antworten

#1 Tobias Klausmann
08/04/2011 - 14:53 | Warnen spam
P.S. wrote:
Hallo,

ich startet in meinem Python-Skript ein GUI-Programm mittles
kdesu als ein anderer user:

import shlex, subprocess

p = subprocess.Popen(shlex.split("kdesu -u test programm"))

Wie bekomme ich nun die PID des Programmes raus. Ein p.pid liefert
mir die PID von kdesu. Ich brauche aber die PID des Kindprozesses
von kdesu.



Sofern kdesu die nicht irgendwo hinmalt/-loggt, sehe ich da keine
Chance. Prozesse kennen ihre Eltern und bestenfalls ihre Kinder,
aber zu mehr Generationen haben sie keinen Zugriff. Die einzige
Chance, die ich sehe, ist die Process Group - aber es würde mich
nicht wundern, wenn kdesu den Kindprozess vor dem exec() zu einem
neuen Session Leader macht.

Du könntest natürlich einen Wrapper um das letzte Programm in der
Kette benutzen, der die PID nach /var/run/ oder /tmp loggt, falls
dein Anwendungsfall das hergibt.

Gruss,
Tobias

Ähnliche fragen