Hallo,
wie kann ich es machen das ein Unterprogramm also ein Programm was mit subprocess gestartet wurde automatisch beim Beenden des eigentlichen Programmes beendet wird?
vielen Dank
wdsl
Unterprogramm killen wenn eigenes Programm beendet wird
Mit Signalen: http://docs.python.org/lib/module-signal.html.
Code: Alles auswählen
#!/usr/bin/env python
import os
import signal
import subprocess
class Killer:
def handler(self, signum, frame):
print "killing process", self.pid
os.kill(self.pid, signum)
def start(self, command):
p = subprocess.Popen(command, shell=True)
self.pid = p.pid
os.waitpid(p.pid, 0)
if __name__ == "__main__":
killer = Killer()
signal.signal(signal.SIGINT, killer.handler)
killer.start("sleep 60")
https://www.xing.com/go/invite/18513630.6a91d4
weis nicht ob ich den Quelltext richtig verstanden habe, aber ich glaub wir meinen andere Sachen.
Ich starte ein Unterprogramm, wenn ich das Hauptprogramm beende läuft allerdings das Unterprogramm weiter und das soll nicht sein. So wie ich das verstanden habe wird hier das Hauptprogramm beendet wenn das unterprogramm beendet oder?
mfg
wdsl
Ich starte ein Unterprogramm, wenn ich das Hauptprogramm beende läuft allerdings das Unterprogramm weiter und das soll nicht sein. So wie ich das verstanden habe wird hier das Hauptprogramm beendet wenn das unterprogramm beendet oder?
mfg
wdsl
Nein, das Unterprogramm (in meinem Beispiel "sleep 60") wird vom Hauptprogramm gestartet. Zuvor wurde im Hauptprogramm für das Signal SIGINT die Handler-Methode "handler" registriert. Empfängt nun das Hauptprogramm dieses Signal, so wird die Handlermethode ausgeführt, die das Unterprogramm mittels dessen PID beendet.wdsl hat geschrieben:So wie ich das verstanden habe wird hier das Hauptprogramm beendet wenn das unterprogramm beendet oder?
Was meinst Du denn genau damit, dass das Hauptprogramm beendet wird?
https://www.xing.com/go/invite/18513630.6a91d4