Aus Python Skript externes Programm starten

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
antaeus
User
Beiträge: 48
Registriert: Dienstag 19. September 2006, 10:10

Mittwoch 21. März 2007, 11:15

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
BlackJack

Mittwoch 21. März 2007, 11:41

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.
antaeus
User
Beiträge: 48
Registriert: Dienstag 19. September 2006, 10:10

Mittwoch 21. März 2007, 11:48

Okay, vielen Dank! Das werde ich gleich mal testen.
Antworten