Seite 1 von 1

Prozess wieder beenden ?

Verfasst: Samstag 7. Januar 2006, 15:57
von snakeseven
Hallo,
mein Prozesshandler soll mit os.popen() einen zweiten Prozess (Script) starten. Macht er auch. Wenn der Prozess sich aufhängt (selten, aber passiert schon mal), dann soll der Prozess beendet und wieder neu gestartet werden. Also Starten geht, aber wie beende ich den Prozess wieder ?

Code: Alles auswählen

import os
pz = os.popen('pfad')    
pz.close()
funktioniert leider nicht.

Wie kann ich ausserdem os.popen dazu bewegen, mehrere Prozesse zu starten ?

Code: Alles auswählen

pz1 = os.popen('pfad1') 
pz2 = os.popen('pfad2') 
pz3 = os.popen('pfad3') 
funktioniert nur linear. Also pz2 wird erst gestartet, wenn pz1 terminiert ist, usw. Seven

Zusatz:
Ich erweitere die Frage auf 'subprocess'. Damit kann ich mehrere .exe's parallel starten, aber wie wieder beenden ?

Verfasst: Samstag 7. Januar 2006, 18:22
von snakeseven
Gegoogelt und gefunden:

Code: Alles auswählen

import time,subprocess,win32api

def kill(pid):
    handle = win32api.OpenProcess(1, 0, pid)
    return (0 != win32api.TerminateProcess(handle, 0))

def init_process():
    #startet programm.exe und beendet es wieder nach 5 Sekunden
    pz1 = subprocess.Popen('programm.exe') 
    time.sleep(5)
    kill(pz1.pid)

init_process()

Verfasst: Donnerstag 17. Juli 2008, 10:51
von dirty sanchez
Wenn ich jetzt aber vom MPlayer MPUI.exe starte und wieder mit kill(process.pid) beende, läuft der MPlayer Prozess weiter da nur der MPui Prozess beendet wird. Gibts eine möglichkeit die Prozesse, die mein gestarteter Prozess mitaufgerufen hat, mitzukillen wenn ich meinen Prozess beende?