nohup是如何工作的?

9

当程序使用nohup运行时,背后执行了什么操作?

父进程的PID是否被更改?

谢谢。

编辑:我了解到nohup(和disown)会导致如果父进程收到SIGHUP信号,则该信号不会发送给进程。这是否意味着它相当于处理SIGHUP(并实际上忽略它)?


1
http://en.wikipedia.org/wiki/Nohup - Paul Whelan
这不是一个编程问题。建议将其迁移到Super User,尽管Unix&Linux Stack Exchange网站也很好。 - David Thornley
3个回答

6

6

这相当于将SIGHUP处理程序设置为SIG_IGN,即:

signal(SIGHUP, SIG_IGN);

POSIX规定,对于execve信号处理程序为SIG_IGN或SIG_DFL的信号不会改变:也就是说,在execve之后忽略的信号仍然被忽略。能够在execve过程中忽略信号具有明显的实用价值:这就是nohup实用程序的工作原理。ianlancetaylor在go问题https://github.com/golang/go/issues/20479上进行了评论。 - yuanjianpeng

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接