fork()函数

定义

是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" % (os.getpid(), os.getppid()))

输出

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" % (os.getpid(), os.getppid()))

返回值

I'm Parent process, pid:80682, ppid:9103
I'm Child process, pid:80683, ppid:80682
After fork, pid:80682, ppid:9103

 

posted @ 2022-04-21 22:02  jihite  阅读(84)  评论(0编辑  收藏  举报