Python-subprocess.Popen bekommen pid des Prozesses, der Gabeln ein Prozess
Bin ich anspringt, eine ssh-Befehl, wird die Gabel selber aus und läuft sogar nachdem das Skript ausgeführt wird. Also der code sieht so aus:
ssh_proc = Popen(['ssh', '-f', '-N', '-L', local_forward, local_user_host], stdin=PIPE, stdout=PIPE)
print ssh_proc.pid
stat = ssh_proc.poll()
Wie Sie sehen können ssh -f
Gabeln ssh als einen Prozess und führt, nachdem das Skript fertig ist - ich brauche, um die pid, dass der ssh-Prozess. Die print-Anweisung oben, nur drucken Sie die pid des Popen Prozess. Irgendwelche Vorschläge?>
Nicht mit -f? Ist die zweite Gabel notwendig?
InformationsquelleAutor Sergey | 2011-02-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Obwohl Sie bestanden haben, die
-f
switch, ssh, Ihr Programm nicht in der Steuerung (und nicht informiert) über welche Aktivitäten der ssh-Programm selbst ist. Es gibt keine direkte Weise für Ihr Programm entdecken Sie, dass die ssh hat Gabel und finden Sie das zweite Kind-pid.Möglicherweise gibt es einen indirekten Weg, um diese Informationen zu erhalten, jedoch. Man könnte auflisten der aktiven Prozesse und suchen für deren Eltern wird die
ssh_proc.pid
.InformationsquelleAutor Greg Hewgill
Wenn Sie:
als parameter mit Ihren Popen Befehl, die pid wird mit dem shell-pid ' s statt des Befehls. Solange der Prozess nicht ein daemon, und trennt sich vom terminal, Sie sollten in der Lage sein, den Prozess zu beenden, einfach durch hinzufügen, dass in. (Man müsste um den Befehl zu ändern, um NICHT eine Liste, sondern ein string.
Ist es in der python-Dokumentation:
http://docs.python.org/2/library/subprocess.html#subprocess.Popen.pid
InformationsquelleAutor NuclearPeon