python注解
os.fork()
Fork a child process. Return 0 in the child and the child’s process id in the parent. If an error occurs OSError is raised.
分叉一个子进程,并且在子进程中返回0,父进程中返回子进程的pid。出错时报OSError错误。
示例
代码片
.
// an example for fork()
import os
import time
# 创建子进程之前声明的变量
source = 10
print('pid:', os.getpid())
time.sleep(5)
try:
pid = os.fork()
if pid == 0: # 子进程
print("this is child process,pid is ", os.getpid())
# 在子进程中source自减1
source = source - 1
print(source)
time.sleep(7)
else: # 父进程
print("this is parent process, pid is", os.getpid())
print(source)
time.sleep(5)
except OSError as e:
print(e)
注解
该程序使用fork()后,裂变成两个进程,原有的进程成为父进程,并获得一个新的子进程。可以通过终端输入top命令,观察到由一个进程裂变两个进程的动态过程。本程序设置了time.sleep(5),可以有足够的时间观看到这一过程。
这还有一个细节,就是父进程会比子进程先结束。当子进程失去父进程时,子进程就变成了孤儿进程,此时要寻找新的爸爸了,要不然它结束后,资源如何回收呢。在Linux系统里,子进程就会将init进程作为父进程。