gpt4 book ai didi

c - 通过杀死其父进程而成为孤儿的子进程不会被 init 收养。我该如何解决?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:24:37 25 4
gpt4 key购买 nike

该程序是通过 fork 两次来避免僵尸。我得到了孤儿进程的父 pid 的值,除了 1,这是不对的。

这是我试过的代码。如果逻辑上有错误,请帮助我。

#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>

int main()
{
pid_t processid;

if((processid=fork())<0)
printf("Fork error\n");
else if(processid==0)
{
if((processid=fork())<0)
printf("Fork error\n");

if(processid>0)
{exit(0);}

sleep(2);
printf("second child, parent pid =%d\n",getppid());
exit(0);
}
exit(0);
}

这是我得到的输出:

root@kali:~# gedit avoidzombies.c
root@kali:~# gcc avoidzombies.c
root@kali:~# ./a.out
root@kali:~# second child, parent pid =1069

最佳答案

在我的系统上,我也得到了一个不同的 pid -- 但那个 pid 对应于 upstart,它是 init 的替代品。因此,它工作正常,但 init(替代)进程的 pid 不是 1。– Dmitri

关于c - 通过杀死其父进程而成为孤儿的子进程不会被 init 收养。我该如何解决?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37418226/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com