#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
int main()
{
pid_t pid;
if(pid=fork() < 0){
printf("Fork Error\n");
}
else if(pid == 0){
printf("Ppid is %d\n",getppid());
sleep(5);
printf("Ppid is %d\n",getppid());
}
else if(pid > 0){
exit(0);
}
}
分别让其在交互状态下和非交互状态下输出,得到不同的结果:
交互状态,直接运行编译生成的可执行程序,./a.out
Ppid is 1870
Ppid is 15480
<间隔5秒>
Ppid is 1870
Ppid is 15480
非交互状态下,让其输出重定向到文件,./a.out > out,out文件中内容如下:
Ppid is 15488
Ppid is 15488
需要注意的是,以上测试输出可能有很大变化,比如,执行./a.out>out后,out文件中内容还出现过如下情况:
Ppid is 1870
Ppid is 1870
Ppid is 15521
Ppid is 1