我希望子进程在分叉后不执行剩余的父代码。
我可以通过检查os.fork()
返回的进程ID来明确退出子进程,如下所示:
def fork_and_exit(fork_target):
print("Inside fork_and_exit()")
new_fork_id = os.fork()
if(new_fork_id == 0):
fork_target()
sys.exit(0) #this prevent child from executing code below
#after returning from fork_target()
print("Exiting fork_and_exit()")
sys.exit(0)
def dummy_fork_target():
print("Dummy fork target!!!")
fork_and_exit(dummy_fork_target)
上面的输出如下:
Inside fork_and_exit()
Exiting fork_and_exit()
Dummy fork target!!!
问题是fork_and_exit()
上方的结构是否正确?我的意思是说这是正确的方法,只是人们这样做吗?或者我不必要地重新发明轮子,还有其他一些众所周知的/首选的方法可以实现这一目标,而我很想念。