Seite 1 von 1

Aus Python Skript externes Programm starten

Verfasst: Mittwoch 21. März 2007, 11:15
von antaeus
Hallo zusammen,

ich möchte aus einem Python Skript heraus zwei andere Prozesse starten. Beide sind sowas wie Server, also Prozesse die im Hintergrund laufen sollen. Der Aufruf, der die Prozesse startet, sollte also nicht blockierend sein, sondern nachdem der Prozess gestartet wurde "zurück kehren" und das startende Programm sollte weiter laufen

Ferner muss ich die beiden Prozesse auch wieder beenden können!

Falls relevant: Server 1 ist ein anderes Python Script, Server 2 eine Java Anwendung

__

Momentan starte ich einen Prozess etwa so:

Code: Alles auswählen

from popen2 import Popen4
command = "Pfad/zum/Server1"
self.server1 = Popen4(command_1)
Beide Prozesse werden auch brav gestartet, allerdings schaffe ich es nicht die beiden Dinger zu Killen.

os.kill(self.server1.pid, 0) wird zwar ohne meckern ausgeführt, aber es bewirkt auch nichts.

Was mache ich denn falsch!?

Gruß & Danke

Verfasst: Mittwoch 21. März 2007, 11:41
von BlackJack
Du musst eine gültige Signalnummer verwenden und nicht einfach eine 0. Üblich sind zum Beispiel 15 um das Programm zum Beenden aufzufordern, oder 9 um "hart" zu killen.

Man sollte immer erst 15 versuchen um dem Programm die Möglichkeit zu geben, sich ordentlich selbst zu beenden. Dabei kann es zum Beispiel offene Dateien selber schliessen, seinen Zustand speichern oder noch einen Log-Eintrag schreiben, bevor es sich beendet.

Bei aktuellen Python-Versionen gibt's übrigens das `subprocess`-Modul, das die ganzen verstreuten und teilweise plattformabhängigen Funktionen zum starten von externen Prozessen zusammenfasst.

Verfasst: Mittwoch 21. März 2007, 11:48
von antaeus
Okay, vielen Dank! Das werde ich gleich mal testen.