nohupはシェルプロセスの子プロセスでのみ機能し、非シェルプロセスの子プロセスでは機能しませんか?

nohupはシェルプロセスの子プロセスでのみ機能し、非シェルプロセスの子プロセスでは機能しませんか?

nohupは外部プログラムです。シェルプロセスの子プロセスに対するSIGHUPアクションを「無視」に変更するにはどうすればよいですか? (nohup以降のサブプロセスfork()および/またはexecve()プログラムから呼び出されたときにいくつかのパラメータに関して?)

nohupはシェルプロセスの子プロセスでのみ機能し、非シェルプロセスの子プロセスでは機能しませんか?

ありがとうございます。

答え1

nohupこの信号を無視するように設定してくださいSIGHUPGNUの実装POSIX仕様nohup指摘

当時の名前便利呼び出されると、SIGHUP信号は無視されるように設定する必要があります。

また良いですPOSIXで指定、子プロセスはを除く無視された信号を継承するため、無視された後にSIGCHLD開始されたすべてのプロセスはそれ自体無視されます。nohupSIGHUPSIGHUP

nohup処理は、親プロセスnohupに関係なく、すべての子プロセスに適用されます。するnohupnohupいいえ(不可能) シェルかどうかにかかわらず、親が信号を処理する方法に影響を与えることはできません。

関連情報