我在子进程块中对父进程pid值感到困惑。我的程序如下:
int main(int argc, char *argv[])
{
pid_t pid;
pid=fork();
if(pid==-1){
perror("fork failure");
exit(EXIT_FAILURE);
}
else if(pid==0){
printf("pid in child=%d and parent=%d\n",getpid(),getppid());
}
else{
printf("pid in parent=%d and childid=%d\n",getpid(),pid);
}
exit(EXIT_SUCCESS);
}
输出结果: 父进程中的pid为2642,子进程中的pid为2643
子进程可以使用getppid()函数获取父进程的pid,这是在“高级Unix编程”中所说的。但是在这里,我得到的是“1”,即“init”进程的pid。
请问如何在子进程块中获取父进程的pid值。请帮助我获得输出结果。
我在“Linux Mint OS”上执行了此程序,但在“WindRiver”OS上我没有遇到这个问题。这个程序会根据操作系统而改变行为吗?