Linuxカーネルが停止したプロセスを含む新しい孤立プロセスグループに最初にSIGCONTを送信し、次にSIGHUPを送信しないのはなぜですか?

Linuxカーネルが停止したプロセスを含む新しい孤立プロセスグループに最初にSIGCONTを送信し、次にSIGHUPを送信しないのはなぜですか?

APUEと言う

親プロセスが終了すると、プロセスグループは孤立し、プロセスグループには停止したプロセスが含まれているため、POSIX.1では、新しく孤立したプロセスグループの各プロセスに停止信号(SIGHUP)を送信する必要があります。 続いて継続信号(SIGCONT)。

カーネルはSIGHUPの後にSIGCONTを送信しますが、プロセスはSIGHUPを実行する前にSIGCONTによって起動されます。それでは、LinuxカーネルがSIGHUPの前にSIGCONTを送信しないのはなぜですか?

ありがとうございます。

関連していますが、答えはありません。保留中のブロック解除信号を最初に処理する前または後に停止したプロセスの実行を再開するSIGCONTの基本的な作業はありますか?


私は私の質問に答えなかった。

ベストアンサー1

あなたの質問に答えただけでなく、最後に追加したリンクもあなたの質問に答えてくれました。

プロセスが停止すると、オペレーティング・システムで実際に処理される SIGCONT および SIGKILL を除くすべての信号処理が停止します。

つまり、SIGCONTを受信して​​処理するときにプロセスが再開された後にのみSIGHUPを処理できるため、SIGCONTの後にSIGHUPを送信しても逆の順序で処理されます。

実際、SIGCONT を処理して SIGHUP を処理する前に SIGHUP を送信するカーネルは、2 番目のプロセスがすでに処理のためにキューに入っているため、SIGCONT 処理と SIGHUP 処理の間でプロセスが実行する作業を削減します。

おすすめ記事