转 : http://www.cnblogs.com/bastard/p/2664896.html
借用一段代码:
/*
* fork_test.c
* version 1
* Created on: 2010-5-29
* Author: wangth
*/
#include <unistd.h>
#include <stdio.h>
int main ()
{
pid_t fpid; //fpid表示fork函数返回的值
int count=0;
fpid=fork();
if (fpid < 0)
printf("error in fork!");
else if (fpid == 0) {
printf("i am the child process, my process id is %d\n, my parent process's id is %d\n",getpid(),getppid());
printf("我是爹的儿子\n");//对某些人来说中文看着更直白。
count++;
}
else {
sleep(3); #加上这一句就能看到子进程的父进程id。如果注释掉并且父进程先运行,子进程打印父进程的id就是1
printf("i am the parent process, my process id is %d\n, my parent process's id is %d\n",getpid(),getppid());
printf("我是孩子他爹\n");
count++;
}
printf("统计结果是: %d\n",count);
return 0;
}
如果父进程先于子进程结束,子进程打印父进程id就会是1.
加个sleep,让父进程的执行等一会子进程 ^__^