再帰要求のシグナルはどうなりますか?

再帰要求のシグナルはどうなりますか?

プロセスが遅くなると、人々は仕事をキャンセルCtrl + cまたはCtrl + z放棄することがよくあります。この場合、これらの信号のどれを処理するか、最初一つまたは最後一つ?はい信号処理?そうでない場合はどれですか?無視される

ベストアンサー1

受信機が次の信号が到着する前に信号処理を開始する時間がある場合、すべての信号が順次処理される。

プロセスがシグナルを受信したがそれを処理する準備ができていない場合(たとえば、シグナルがマスクされているかプロセスが停止した場合)、カーネルはシグナルを保留中としてマークします。信号が転送されます。

プロセスが準備されていない状態で異なる番号の複数の信号が受信されると、すべての信号が処理されます。信号はプロセスに 1 つずつ渡されます。彼らの配達順序は次のとおりです。POSIX が指定されていません。;存在するLinux、番号が付けられ、最小のものから渡されます(たとえば、保留中の場合はSIGHUP = 1が最初に渡され、次にSIGQUIT = 2など)。FreeBSDいかなる保証も行われません。

プロセスが準備されていない状態で同じ番号の複数の信号が受信されると、信号がマージされる可能性があります。 POSIXは何が起こるかを指定しませんが、ほとんどのユニークはマージされます。たとえば、を実行している場合、kill -1 234; kill -1 234プロセス234の信号1ハンドラが1回または2回受信されるかどうかは、234が最初の信号を転送するためのタイムスライスを取得するかどうかによるタイミングの問題です。

おすすめ記事