c - parent 退出后如何使子进程死亡?

假设我有一个进程恰好产生一个子进程。现在,当父进程因任何原因(正常或异常,通过 kill、^C、断言失败或其他任何原因)退出时,我希望子进程终止。如何正确地做到这一点?


关于stackoverflow的一些类似问题:

  • (之前问过)How can I cause a child process to exit when the parent does?
  • (稍后询问)Are child processes created with fork() automatically killed when the parent is killed?

关于 Windows 的 stackoverflow 的一些类似问题:

  • How do I automatically destroy child processes in Windows?
  • Kill child process when parent process is killed

最佳答案

通过在 prctl() 系统调用中指定选项 PR_SET_PDEATHSIG ,当父进程死亡时,子进程可以要求内核传递 SIGHUP(或其他信号),如下所示:

prctl(PR_SET_PDEATHSIG, SIGHUP);

详见man 2 prctl

编辑:这仅适用于 Linux

关于c - parent 退出后如何使子进程死亡?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/284325/

相关文章:

python - numpy.random.seed(0) 做什么?

python - 在 Python 中不能定义多个构造函数吗?

python - 如何将数据框行分组到 Pandas groupby 中的列表中

linux - 如何在 Linux 中在段错误时生成核心转储?

python - 了解 __getattr__ 和 __getattribute__ 之间的区别

linux - 保持 SSH session 处于事件状态

regex - 用 grep 匹配一行中的两个字符串

python - 安装 python 时在 $PATH 中找不到可接受的 C 编译器

python - 如何将空列添加到数据框中?

linux - grep 不显示路径/文件 :line