python3では、forked子プロセスを作成していますが、これは正しく終了します。ここではいくつかのコード例は次のとおりです。今python forkを使ってプロセスが消滅するのを避けるには?
import os
child_pid = os.fork()
if child_pid == 0:
print("I am in the child with PID "+str(os.getpid()))
# doing something
a = 1+1
print("Ending child with PID "+str(os.getpid()))
os._exit(0)
else:
#parent process
os.waitpid(-1, os.WNOHANG)
import time
for x in range(100):
time.sleep(1)
print("waiting...")
、子プロセスが終了しているように見えるとして、それはまだ「亡き」プロセス(親プロセスがまだ実行されている間)として見ることができます。どのように実際に終了した子プロセスを取り除くのですか?コードを変更するには?
あなたはそれがゾンビプロセスであることを意味するのですか?あなたの親は、それが存在する状態を得るために子供を待つ必要があります、そして、それは遠ざかります。 http://stackoverflow.com/questions/13870945/how-can-i-prevent-a-child-process-to-not-become-a-zombie-if-parent-exits – pcarter
「os._exit(0 ) 'によって' sys.exit(0) 'は状況を変えません。また、親プロセスに 'os.waitpid(-1、os.WNOHANG)'コマンドを追加しても状況は変わりません。 「機能していない」プロセスはまだ存在します! – Alex
@pcarter:私のコマンドを見て、あなたの提案はうまくいかないようです... – Alex