我该如何使子进程不使用os.fork()在python中执行父代码

时间:2018-09-04 07:55:46

标签: python multithreading fork

我希望子进程在分叉后不执行剩余的父代码。

我可以通过检查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()上方的结构是否正确?我的意思是说这是正确的方法,只是人们这样做吗?或者我不必要地重新发明轮子,还有其他一些众所周知的/首选的方法可以实现这一目标,而我很想念。

0 个答案:

没有答案