理論的には、signal()を使用してSIGINTのハンドラを関連付けます。このシグナルが処理されると、つまりシグナルハンドラが実行されると、デフォルトでは同じシグナルがブロックされます。ブロックする理由は何ですか?それはデッドロックのような状況につながっていますか?親切に明確にする。シグナルハンドラが同じシグナルを扱う際になぜブロックされるのですか
2
A
答えて
3
シグナルハンドラはリエントラントではないと予想されるためです。
シグナルハンドラは、一般的にすばやく実行され、唯一の安全な機能非同期(async)を呼び出す必要があり、機能のすなわち、非常に制限されたセット、signal(7)を参照してください。
通常、内部で呼び出し可能にしたくない場合があります。
あなたは信号から正常に戻る(またはその内部siglongjmp
を行う)していない場合を除き、前のシグナルマスクが完成したシグナルハンドラの後に復元されます。
しかし、あなたは自分自身をブロックしません(sigaction
スルー)シグナルハンドラをインストールすることができます。同様の理由
は、通常のプロセッサで、intteruptハンドラもすばやく実行されていると割り込みを無効にしています。
関連する問題
- 1. シグナルの処理中に同じシグナルをブロックする方法は?
- 2. MySQLがéをeと同じように扱うのはなぜですか?
- 3. これらの変数のすべてが同じように扱われないのはなぜですか?
- 4. シグナルハンドラでpthread mutexで保護されたリストを扱う方法
- 5. なぜchar *はCのchar **と同じ扱いですか?
- 6. シグナルがなぜトリガされないのですか?
- 7. 私のシグナルハンドラがなぜ2回実行されるのですか?
- 8. Linux:シグナルハンドラ内のシグナルを無視し、そのような連続するシグナルをすべて無視する
- 9. これらのブロックが同じ高さで整列していないのはなぜですか?
- 10. 私の非同期コントローラがブロックされているのはなぜですか?
- 11. [1..n]はHaskellの[n..1]と同じように扱われないのはなぜですか?
- 12. Djangoが同じセッション内で同時にリクエストをブロックするのはなぜですか?
- 13. テキストのブロックが同じページに表示されるようにする
- 14. SignalProducerがシグナルを返さないのはなぜですか?
- 15. Redisでブロックされることなく、複数のクライアントが同じリストに同時にアクセスできますか?
- 16. 2行に同じ結果が表示されるのはなぜですか?
- 17. パラレルで同じディレクトリに異なるターゲットを扱う方法
- 18. 同じファイルを同時に呼び出すときにPHPがブロックされる
- 19. なぜシグナルがReactiveCocoaで2回呼び出されるのですか?
- 20. TCPソケットがなぜブロックされているのですか?
- 21. バインドで同じエフェメラルポートが返されるのはなぜですか?
- 22. ioctl()がブロックされないのはなぜですか?
- 23. ブロックされたスレッドによってプロセスがブロックされますか?なぜ、どのように?
- 24. 同じファイル、同じファイルサイズだが2つの異なるメモリサイズ、なぜですか?
- 25. シグナルスレッドがブロックされている場合、受信スレッドでシグナルが処理されないのはなぜですか?
- 26. ジェネリックリストを同じリストタイプに変換する際にエラーが発生するのはなぜですか?
- 27. Pythonでネストされたtryブロックに同じelseブロックを使用します。
- 28. HTMLのテキストボックスが、モバイルデバイスやデスクトップに同じように表示されないのはなぜですか?
- 29. プロセスはシグナルをどのように扱いますか?
- 30. なぜ変数が列のように扱われているのですか?