signals - 当父进程退出时,分叉的子进程是否退出?
问题描述
我通过终端运行了一个简单的 fork() 代码。当我关闭终端窗口时,终端 Bash 进程接收到 SIGHUP 信号并将其发送到其子进程。最后,Bash 进程、父进程和子进程都退出。但是当我通过 kill -1 向父母发送 SIGHUB 信号时,孩子没有收到 SIGHUP 信号。这是为什么?
下面是测试代码:</p>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <signal.h>
#include <sys/wait.h>
int main(int argc, char *const *argv)
{
fork();
for(;;)
{
sleep(1); //休息1秒
printf("休息1秒,进程id=%d!\n",getpid());
}
return 0;
}
解决方案
推荐阅读
- android - 如何更改 Xamarin.Forms 中日期选择器的区域设置?
- python - 如何将 robocopy 进度从控制台输出到 tkinter 标签
- python - 将二维数组分配给熊猫数据框
- c++ - 什么样的值是模板参数?我可以(不)用它们做什么?
- ip - 白名单前端的 IP 组 - Træfik
- javascript - 无法设置未定义的属性“天气”
- html - 有没有在不向父页面添加任何代码的情况下使 iFrame 响应?
- php - 在php中附加多键Json数组?
- docker - 为什么我可以在 nginx 配置中引用 docker 服务?
- haskell - putStrLn 等由于使用带有使用 IO Monads 的函数的地图而没有显示?