• linux sighup 信号


           在读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 将是会话首进程。

    一般来说,控制进程将成为会话首长进程,这里的控制进程是指获取控制终端的进程。

    ~~~~~
  • 相关阅读:
    ssh 远程命令
    POJ 2287
    POJ 2376
    hihoCoder1488
    POJ1854
    HDU 5510
    HDU 4352
    CodeForces 55D
    HDU 1517
    CodeForces 1200F
  • 原文地址:https://www.cnblogs.com/missmzt/p/5408351.html
Copyright © 2020-2023  润新知