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