一个进程可以通过调用fork()或者vfork()函数来创建一个新进程,调用进程被成为父进程,产生的新进程叫做子进程。而在调用(以fork()为例)fork()的时候,会产生两个返回值,一个是返回给父进程,另一个是返回给子进程。而用户可以通过返回值来判断哪个是父进程,哪个是子进程。在子进程中返回值为0,而在父进程中的返回值为子进程ID。这种安排是有理由的。一个进程可以有多个子进程,但是却只能有一个父进程,因此我们可以通过getppid()来获取父进程的ID,但是却没有函数用来获取子进程的ID,因此便将子进程的ID返回给父进程。下面的例子可以说明这一点:
运行结果如下:
那么,在一个进程创建子进程的时候会发生什么呢?
首先我们要了解,每个进程都有自己的虚拟地址空间,包括正文