您必须将守护进程与终端解除关联,以避免发送与终端操作相关的信号(例如终端会话结束时的SIGHUP以及可能的SIGTTIN和SIGTTOU)。
但是请注意,使用TIOCNOTTY与终端解除关联的方式ioctl
已过时。您应该setsid()
改用。
守护程序离开其原始进程组的原因是不接收发送到该组的信号。请注意,这setsid()
还将您的流程置于其自己的流程组中。
为什么在编写Linux守护程序时必须从tty分离?
您必须将守护进程与终端解除关联,以避免发送与终端操作相关的信号(例如终端会话结束时的SIGHUP以及可能的SIGTTIN和SIGTTOU)。
但是请注意,使用TIOCNOTTY与终端解除关联的方式ioctl
已过时。您应该setsid()
改用。
守护程序离开其原始进程组的原因是不接收发送到该组的信号。请注意,这setsid()
还将您的流程置于其自己的流程组中。