父进程和子进程获得的pid返回值以及系统中的对父子进程的pid的区别?

在学习进程过程中我们都知道,父进程中调用os.fork(),然后由系统创建子进程。子进程继承了父进程的所有程序和内存空间。
父进程的PID返回值是子进程的PID号,而子进程的PID的返回值是0。按照这种说法,子进程在系统中的PID就为0。具体情况请看下面的程序:

import os

pid = os.fork()

if pid < 0:
    print("Create process failed")
elif pid == 0:
    #获取当前进程的PID
    print("子进程的pid:",os.getpid())
    #获取父进程的PID
    print("从子进程中获取父进程的pid:",os.getppid())
else:
    print("在父进程中获取子进程的pid:",pid)
    print("获取父进程的pid:",os.getpid())
结果:
	在父进程中获取子进程的pid: 5363
获取父进程的pid: 5362
子进程的pid: 5363
从子进程中获取父进程的pid: 5362
其中os.getpid是获取当前进程的pid,os.getppid是获取当前进程的父进程的pid.

问题

如果子进程的pid返回值为0,那么子进程在系统中的pid为0。
		但是事实并不是这样,从以上的示例中可以得知,父进程在系统的pid比子进程要大1。
		分别为
			父进程:5362
			子进程:5363
		表示在系统中的pid是原有的pid分别加上各自进程pid的返回值。

你可能感兴趣的:(多进程,线程,Python后端,多进程,多线程,Python,Python后端,人工智能)