c - 防止子进程成为孤儿进程

标签 c linux process init

我的 Linux 进程有 4 个子进程。经过一段时间的执行后,所有子进程都被 init 进程采用。我们该如何预防这种情况呢? (僵尸进程不是这种情况)。

该过程是用C语言编写的,操作系统是Linux。我的代码调用 waitpid!可能是什么问题? 99,99%我们不会遇到这个问题。

最后更新:如果有人执行“kill -9”怎么办?这会立即终止父进程并使子进程成为孤儿。

最佳答案

如果您的进程被 init 重新设置父进程,则意味着它们的父进程已死亡。当进程的父进程死亡时,init 会采用它,以便在子进程(即 init) 收到 SIGCHLD

如果您不希望 init 成为您子进程的父进程,则必须确保您的进程一直存在,直到您的所有子进程都已死亡并被您的程序收割。

关于c - 防止子进程成为孤儿进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6813257/

相关文章:

c - 如何修复我在 'else' 之前说预期表达式的错误

c - 以线程安全的方式使用 glibc malloc hooks

linux - 当 bash 脚本以 .运算符(operator)?

linux - Linux 内核空间中的 pread 等效(与 O_DIRECT)

java - 如何使用 waitFor() 暂停进程

java - 从 Java 程序启动外部 Java 程序

c - 如何从字符串中复制 2 个 int?

c - C 中的 open() 系统调用以字符数组作为附加路径?到文件名

linux - 连接超时;在 nslookup 中尝试下一个原点

从多进程 docker 容器记录