Python の子プロセスに問題があるため、非常に単純なスクリプトを作成しました。
import os
import sys
import time
pid = os.fork()
if pid:
#parent
time.sleep(30)
else:
#child
#os._exit(0)
sys.exit()
親プロセスがスリープしている間に起動します
ps fax | grep py[t]hon
そして、私はこの出力を読みました
2577 ? S 0:00 python /home/pi/python/GPIO/GPIODaemon.py restart
2583 ? Z 0:00 \_ [python] <defunct>
常にゾンビプロセスを使用しているsys.exit()
かos._exit(0)
、常に存在し、その理由を理解できません。
より複雑なコードに取り組んでいると、子プロセスがロックされたままになっているリソースがいくつかあると考えていましたが、この単純化されたコードでは、子はファイル/ソケット/データベース接続をまったく持っていません! 子プロセスがゾンビ化するのはなぜですか?