Nohupは外部プログラムです。シェルプロセスの子プロセスによるSIGHUPのアクションを「無視」に変更するにはどうすればよいですか? (子プロセスがnohupに続くプログラムでfork()
および/またはexecve()
を呼び出すときのいくつかの引数に関して?)
Nohupはシェルプロセスの子プロセスにのみ適用され、非シェルプロセスの子プロセスには適用されませんか?
ありがとう。
Nohup
は、SIGHUP
シグナルを無視するように自身を構成します。たとえば、 GNU実装 。 Nohup
のPOSIX仕様 は次のように述べています。
指定されたutilityが呼び出された時点で、SIGHUP信号は無視されるように設定されます。
また、 POSIXで指定 のように、子プロセスはSIGCHLD
以外の無視されたシグナルを継承するため、Nohup
が無視された後にSIGHUP
によって開始されたプロセスは、それ自体がSIGHUP
を無視します。
Nohup
の処理は、Nohup
の親プロセスに関係なく、Nohup
のすべての子に適用されます。 Nohup
は、シェルであるかどうかに関係なく、親によるシグナルの処理方法に影響を与えません(また、影響を与えません)。