我有以下代码
void main()
{
pid_t pid,pid1;
pid = fork();
if(pid==0)
{
pid1= getpid();
printf("\n Child A %d" ,pid);
printf("\n Child B %d",pid1);
}
else
{
pid1 = getpid();
printf("\n Parent C %d:",pid);
printf("\nParent d %d:",pid1);
}
}
我不明白为什么我要为B和C获得相同的进程ID。有人可以在这里帮助我吗?
最佳答案
pid1 = getpid();
它在子进程中运行,因此提供了子进程ID。
pid = fork();
这是从父进程启动的,但是返回值对父子都可用。但是,它向父进程和子进程返回不同的值。直接来自fork man page:
子进程的PID在父级中返回,0为
归还孩子
因此,在两种情况下(B和C),它都是子进程的pid。
关于c - 了解Linux中的fork(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35261821/