プロセス間通信には(
SIGRTMIN + 1
)が安全ですか?異なるプロセスで変化しますか?Linuxシグナルに関するいくつかの質問sigqueue(2)
またはkill(2)
を使用して標準信号とリアルタイム信号を送信する場合、違いはありますか?
SIGUSR1
(標準信号)シリーズを送信してゆっくり処理する場合は、SIGUSR1
という複数のインスタンスがキューにありますか?sigqueue(2)
kill(2)
をSIGRTMIN
(リアルタイム信号)に送信することはどうですか?それらは待ち行列に入れられますか?
3
A
答えて
3
sigqueue()は、リアルタイム信号のみを送信するのに使用でき、kill()は標準信号のみを送信するために使用できます。私はいずれかのAPIで間違った信号を送信しようとしていません。しかし、私はそれがいくつかの適切なerrnoで失敗すると期待します。 Linuxは標準シグナルを待ち行列に入れません。リアルタイム信号はキューに入れられます。キューに入れることができるリアルタイム信号の最大数はと定義されています。RLIMIT_SIGPENDING
特定の信号送信者が送信しているハンドラの設定がある限り、リアルタイム信号を使用できます。私は、以前の私の答えで間違っていた
EDIT
。 kill()もリアルタイム信号を送ることができるようです。しかし、__send_signal()のコメントから、リアルタイムシグナルを送信するためにkillを使うと、シグナルが待ち行列に入れられないことがあるような場合があります。
/*
* Real-time signals must be queued if sent by sigqueue, or
* some other real-time mechanism. It is implementation
* defined whether kill() does so. We attempt to do so, on
* the principle of least surprise, but since kill is not
* allowed to fail with EAGAIN when low on memory we just
* make sure at least one signal gets delivered and don't
* pass on the info struct.
*/
0
この投稿は古いニュースですが、それはいくつかの明確化されているGoogleで上位にランクインし、残念ながらそう、ここで誤解されています
- 一つは、このとき、sigqueueが可能
- 、これらの機能のいずれかで任意の信号を送ることができますいくつかの "文脈" [例えば、情報、@see siginfoなど。 al]、kill/raiseとは対照的に
- リアルタイム信号によると、送信またはキューイングされても問題ありません。キューされたcf。非RTシグナルと同じようにグループ化]
関連する問題
- 1. Pythonの "append"関数に関するいくつかの質問
- 2. シグナルSIGFPE質問
- 3. ELFフォーマットに関するいくつかの愚かな質問
- 4. JavaのOOPに関するいくつかの質問
- 5. いくつかのiPhoneのコアプロットに関する質問
- 6. C# - asp.net - このコーディングに関するいくつかの質問
- 7. NALUのスタートコードに関するいくつかの質問
- 8. Spring MVCのApache Shiroに関するいくつかの質問
- 9. db4oの作業に関するいくつかの質問
- 10. CRCの基礎に関するいくつかの質問
- 11. SonarLint - VB.NETのいくつかの規則に関する質問
- 12. アンドロイド:いくつかのカメラのAPIに関する質問
- 13. App ServicesのKudu Consoleに関するいくつかの質問
- 14. WindowsのDLLに関するいくつかの質問?
- 15. ConcurrentDictionaryの使用に関するいくつかの質問
- 16. いくつかのCSSに関する質問
- 17. いくつかのDテンプレートに関する質問
- 18. XmlTextWriterに関するいくつかの質問
- 19. PHPセッションに関するいくつかの質問
- 20. 形状作成に関するいくつかの質問
- 21. フォーム処理に関するいくつかの質問?
- 22. Pyradに関するいくつかの質問
- 23. マルチプロセッシングに関するいくつかの質問。
- 24. IPv6に関するいくつかの質問
- 25. $ GOPATHに関するいくつかの質問
- 26. Asp.net MVCに関するいくつかの質問
- 27. AsyncTaskに関するいくつかの質問
- 28. いくつかのUIScrollViewに関する質問
- 29. dma_alloc_coherentに関するいくつかの質問
- 30. Qtプロファイルに関するいくつかの質問
カーネルのソースコードを読んだり、Posixの仕様を読んだら、それは経験ですか?いくつかのソースがある場合、それらを共有するのは興味深いでしょう... –
しかし、事実は 'kill(2)'と 'sigqueue(2)'はどちらも失敗することなくシグナルを送ることができます。私は彼らが働くことを証明するために小さなテストを書いた。しかし、コメントにソースコードを投稿する方法はわかりません。 – majie