参考来源:unix network programing I
我们知道,fork函数(以及它的变体)是unix系统内创建一个新进程的唯一方法,原型如下: #include<unistd.h>
pid_t fork(void)
returns: 0 in child,process id of child in parent,-1 on error.
如果是第一次接触这个函数,那么这个函数最独特的地方是他被调用了一次,却有两个返回值。在父进程中返回子进程的pid,在子进程中返回0,或者返回-1表示执行出错。
那么为什么要这么安排呢?为什么不在子进程中返回父进程的pid或者在父进程中返回0呢?原因大致如下: 每一个子进程只有一个唯一的父进程,子进程总是可以通过调用getppid函数获得父进程的pid,但是一个父进程可以有很多个子进程,它通过其他方式获得某一个指定的子进程的pid,所以通过返回子进程的pid来保持对子进程的记录。
用户377235 2014-2-20 10:37
它通过其他方式获得某一个指定的子进程的pid ,是不是错了? 它无法通过其他方式获得某一个指定的子进程的pid。