我正在尝试使用fork()
获取子进程中的父ID。但是,我没有得到正确的家长 ID。有时我这样做,有时我不这样做。我的 printf
打印 1 作为父 ID。这是我的代码片段。谁能解释一下原因。
for(i = 1 ; i <= n ; i++){
if((pid = fork()) == 0){
printf("Parent id is %u\n", getppid()) ;
break ;
}
}
最佳答案
ID为1
的进程是init进程。 top -p 1
的输出(在我的 Ubuntu 机器上):
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1 root 20 0 24732 2704 1376 S 0 0.0 0:00.93 init
如果进程被孤立,则 init流程采用orphaned process ,并且 getppid()
将在孤立进程中返回 1
。在您的情况下,有时,在子进程调用 getppid() 之前,父进程必须退出。
关于c - 使用 fork() 在子进程中未获取适当的父 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22664986/