一个最简单的例程
使用man 2 getpid
man 2 fork
man 3 sleep 获得帮助
其中发现了一点:在下面的程序中,很显然parent process首先退出,然后child process的getppid()才执行。但是parent process已经被销毁了,此时在ubuntu中返回的进程号经查看是upstart 进程的pid。所以下一步就是查看这是为什么呢?upstart是个什么驻留的服务,子进程的getppid为何会返回它的pid!!!
ubuntu15.04已经使用了systemd作为初始化系统了,ps -A会发现这货是pid=1的进程
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
int main(int argc,char *argv[])
{
if(!fork()) {
sleep(1);
printf("This is child!\n");
printf("getpid is %d\n",getpid());
printf("the parent pid is %d\n",getppid());
}
else {
printf("This is parent!\n");
printf("getpid is %d\n",getpid());
printf("the parent pid is %d\n",getppid());
//sleep(3);
}
return 0;
}