nohup 是一个外部程序。如何将 shell 进程的子进程的 SIGHUP 操作更改为“忽略”? (就子进程调用时的一些参数fork()
和/或execve()
nohup 之后的程序而言?)
nohup是否只适用于shell进程的子进程,而不适用于非shell进程的子进程?
谢谢。
答案1
nohup
将自身配置为忽略该SIGHUP
信号;参见例如GNU 实现。POSIX 规范nohup
指出
当时被点名的公用事业被调用时,SIGHUP 信号应设置为被忽略。
也如由 POSIX 指定,子进程继承除 之外的被忽略信号,因此在被忽略之后SIGCHLD
启动的任何进程本身也会被忽略。nohup
SIGHUP
SIGHUP
nohup
的处理适用于 的任何子进程nohup
,无论 的nohup
父进程如何。nohup
做不是(也不能)影响其任何父级处理信号的方式,无论它们是否是 shell。