源码阅读 - nohup

查看原文

UNIX 程序 nohup 的源码相当简单,总共就几十行。它的功能是将标准输出和标准错误重定向到 nohup.out (默认)或者参数自定义的日志文件,然后调用 execvp,将 nohup 这个进程在操作系统里整个替换成参数定义的命令起的进程。最为特别的一行代码是 (void)signal(SIGHUP, SIG_IGN);。这行代码会导致进程忽略 HUP 信号,而这个信号按照惯例是终端退出时发送给进程。忽略这个信号将导致终端退出时进程仍然还在运行,从而达到背地里暗戳戳地运行。