您的位置:首页 > 运维架构 > Linux

linux sighup 信号

2016-04-19 15:19 239 查看
在读UNIX网络编程卷一 13.4 守护进程编写时, 书中写到,这里必须忽略SIGHUP信号,因为会话头进程(及首次fork产生的子进程,通过setsid 成为会话头进程)终止后,会向其会话中所有进程(及再次fork产生的子进程)发送SIGHUP信号。

在这里有个疑问,SIGHUP信号在第一个父进程退出时,不会发送吗? SIGHUP信号到底什么情况下会产生?

翻阅资料得到答案:

1、终端关闭时,该信号被发送到session首进程以及作为job提交的进程(即用 & 符号提交的进程)

2、session首进程退出时,该信号被发送到该session中的前台进程组中的每一个进程

3、若父进程退出导致进程组成为孤儿进程组,且该进程组中有进程处于停止状态(收到SIGSTOP或SIGTSTP信号),该信号会被发送到该进程组中的每一个进程。

书中所描述的是第二种情况,即 session 首进程退出。

那个 第一个父进程退出,是什么情况呢?

1. 不是第一种情况, 因为不是终端关闭, 不是第三种情况,因为父进程退出,进程组只有一个运行的子进程。

2. 父进程会是session首进程吗? 答案是,不是,因为我们运行该程序,一般是在shell中,通过命令进行,这时,shell 将是会话首进程。

一般来说,控制进程将成为会话首长进程,这里的控制进程是指获取控制终端的进程。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: