web-dev-qa-db-ja.com

Nohupはシェルプロセスの子プロセスにのみ適用され、非シェルプロセスの子プロセスには適用されませんか?

Nohupは外部プログラムです。シェルプロセスの子プロセスによるSIGHUPのアクションを「無視」に変更するにはどうすればよいですか? (子プロセスがnohupに続くプログラムでfork()および/またはexecve()を呼び出すときのいくつかの引数に関して?)

Nohupはシェルプロセスの子プロセスにのみ適用され、非シェルプロセスの子プロセスには適用されませんか?

ありがとう。

1
Tim

Nohupは、SIGHUPシグナルを無視するように自身を構成します。たとえば、 GNU実装NohupのPOSIX仕様 は次のように述べています。

指定されたutilityが呼び出された時点で、SIGHUP信号は無視されるように設定されます。

また、 POSIXで指定 のように、子プロセスはSIGCHLD以外の無視されたシグナルを継承するため、Nohupが無視された後にSIGHUPによって開始されたプロセスは、それ自体がSIGHUPを無視します。

Nohupの処理は、Nohupの親プロセスに関係なく、Nohupのすべての子に適用されます。 Nohupは、シェルであるかどうかに関係なく、親によるシグナルの処理方法に影響を与えません(また、影響を与えません)。

4
Stephen Kitt