Ich habe mehrere Fragen wie diese gesehen, aber nach dem Versuch, verschiedene Varianten zu überprüfen, ob die Kinder leben und die Kinder Prozesse beenden, vereinfachte ich das Problem und noch wird es nicht funktionieren.Python gegabelte Prozesse werden nicht sterben
Bin ich falsch beim Beenden eines gegabelten Prozesses mit sys.exit (0)? Gibt es eine andere Möglichkeit, es zu töten. Die Sache ist, ich kann nicht die Eltern die Prozesse töten lassen, da sie nicht wissen, wann sie fertig sind.
Zuerst dachte ich, es war, weil ein Systembefehl vor dem Beenden ausgeführt (Python run system command and then exit... won't exit), aber ich habe sogar, dass in der vereinfachten Version als gegebene Lösung auch nicht entfernt.
Hier ist ein Beispiel:
import sys
import os
import time
children = []
for i in range(0,3):
pid = os.fork()
if pid == -1:
continue
elif pid == 0:
# Do work...
print 'Child %d spawned' % os.getpid()
sys.exit(0)
else:
children.append(pid)
time.sleep(5)
for pid in children:
proc_path = '/proc/%d' % pid
if not os.path.exists(proc_path):
print 'Child %d is dead' % pid
else:
print 'Child %d is alive' % pid
Diese Drucke:
Child 27636 spawned
Child 27637 spawned
Child 27638 spawned
Child 27636 is alive
Child 27637 is alive
Child 27638 is alive
Aber Kind Prozesse sollten tot sein.
Wodurch werden diese Prozesse in diesem Fall zu Zombies?
Danke. Das funktioniert, ich muss etwas mehr Logik hinzufügen, aber das ist in Ordnung. – JayLev