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

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

これPOSIXシステムインタフェース仕様説明する:

デフォルトの動作は、SIGCONTプロセスが停止した場所で実行を再開することです。後ろに保留中のブロック解除信号が最初に処理されます。

ここで「以後」とはどういう意味ですか? 「以前」でなければなりませんか?それが意味するもののいくつかの例はありますか?

APUEにも同様の状況があります。

親プロセスが終了するとプロセスグループが孤児になるため、POSIX.1は新しく孤立したプロセスグループ(子プロセスと同様)で停止した各プロセスに中断信号(SIGHUP)と継続信号(SIGCONT)を送信するように要求します。

そうすれば子供が続くことができ、後ろにブレーク信号を処理します。保留中の信号の基本的な作業はプロセスを終了することであるため、信号をキャプチャするための信号ハンドラを提供する必要があります。したがって、sig_hup 関数の printf が pr_ids 関数の printf の前に現れると予想します。

「後」は「前」を意味しませんか?

存在するSIGCONTSIGHUP孤児Linuxプロセスグループの順序上記の2つの文では、「以降」の代わりに「以前」を提案するようです。それとも、私が間違って理解したかもしれません。

SIGHUP子プロセスが実行を再開するまでメッセージを渡すことはできません。プロセスが停止すると、 SIGCONTおよびを除くすべてのシグナリングが中断されますSIGKILL

だからSIGHUP最初に到着しますが、まで処理できません。SIGCONT はプロセスの実行を起こします。

ありがとうございます。

複数の信号がプロセスに到着した場合、これらの信号を処理するプロセス間の順序は何ですか?

答え1

いいえ、それ以降を意味します。条件は「実行を再開」プロセスが停止する場所」。

信号処理が最初に行われ、それから実行は続行されます。

答え2

信号.c POSIX 1b互換シグナルカーネルコード

で検索してくださいSIGCONTSIGCONTこの信号が見つかると、コードが保留中の信号を探していることがわかります。

関連情報