定义

是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