os模块下的fork()的理解

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进程作为父进程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值