在python3中,我正在創建分叉的子進程,我退出 - 我認爲 - 正確。下面是一些代碼示例:如何避免使用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...")
現在,隨着孩子的過程似乎要結束,它仍然可以被看作是「倒閉」的過程(而父進程仍在運行)。如何真正擺脫結束的孩子進程?如何更改代碼?
通過defunct是否意味着這是一個殭屍進程?你的父母需要等待孩子獲得它的存在狀態,然後它會消失。請參閱http://stackoverflow.com/questions/13870945/how-can-i-prevent-a-child-process-to-not-become-a-zombie-if-parent-exits – pcarter
替換'os._exit(0 )''by'sys.exit(0)'不會改變這種情況。並且在父進程中添加命令'os.waitpid(-1,os.WNOHANG)'不會改變這種情況。一個'不存在'的過程依然存在! – Alex
@pcarter:看到我的命令,你的建議似乎不起作用... – Alex