fork()函数
原创
©著作权归作者所有:来自51CTO博客作者mb6300b232419d1的原创作品,请联系作者获取转载授权,否则将追究法律责任
定义
是UNIX中的分叉函数,将运行着的程序分成两个完全一样的进程。
fork() 有返回值:
- 0: 返回到新创建的子进程
- 负值:创建子进程失败
- 正数: 返回父进程或调用者
返回值: 若成功调用一次则返回两个值,子进程返回0,父进程返回子进程ID;否则,出错返回-1
示例
import os
import time
print("Before fork, pid:%s, ppid:%s" % (os.getpid(), os.getppid()))
pid = os.fork()
if pid == 0:
print("I'm Child process, pid:%s, ppid:%s" % (os.getpid(), os.getppid()))
time.sleep(5)
else:
print("I'm Parent process, pid:%s, ppid:%s" % (os.getpid(), os.getppid()))
time.sleep(5)
print("After fork, pid:%s, ppid:%s"
输出
I'm Parent process, pid:79611, ppid:9103
I'm Child process, pid:79612, ppid:79611
After fork, pid:79612, ppid:79611
After fork, pid:79611, ppid:9103
当父进程终结时,子进程也会跟随消亡,如
import os
import time
print("Before fork, pid:%s, ppid:%s" % (os.getpid(), os.getppid()))
pid = os.fork()
if pid == 0:
print("I'm Child process, pid:%s, ppid:%s" % (os.getpid(), os.getppid()))
time.sleep(15)
else:
print("I'm Parent process, pid:%s, ppid:%s" % (os.getpid(), os.getppid()))
time.sleep(5)
print("After fork, pid:%s, ppid:%s"
返回值
I'm Parent process, pid:80682, ppid:9103
I'm Child process, pid:80683, ppid:80682