私はソケットを閉じたが、すべてのスレッドがaccept/connect
にブロックされていることを通知する前に、私はユーザ固有のシグナルを送信していますが、シグナルを受信しているスレッドのIDは知らない。システムコールは使用できませんkill(pid, signal)
fdを開いているすべてのスレッドに信号を送る方法はありますか?
答えて
通知せずにソケットをシャットダウンするだけではどうですか?ソケットを受け入れるか読み取る際にブロックされた各スレッドは、対応するエラーを返して、必要な処理を行うことができます。
私は間違っている場合、私はシャットダウンがTCPのためだけであると確信します – Bionix1441
あなたは正しいです、私はあなたがUDPを使用しているのか分からなかった。次に、名前付きソケット、共有メモリなどのIPC技術を使用する必要があります。 –
はい。実行中のすべてのスレッドに、システムコールkill()を介してシグナルを送ることができます。 このように使用します。 キル(0、signal_id) ここで、 '0'はすべてのプロセスにブロードキャスト信号を表します。ブロードキャストされた信号に登録された「プロセス」は、さらなるアクションのために信号ハンドラを実行した。
'kill()'はプロセスにシグナルを送ります。このプロセスがマルチスレッドの場合、プロセスのスレッドの1つがシグナルを受信します(ブロックされていない場合)。だから 'kill()'はシグナルを特定の***スレッドにアドレス指定するオプションではありません***。 – alk
- 1. シェル:開いているポートのFDを取得する方法
- 2. オーディオ信号にゼロローカル信号を得る良い方法はありますか?
- 3. スレッドIDに基づいてスレッドをロックする方法はありますか?
- 4. pyqt4がメインスレッドのスロットにスレッドで信号を送信しています
- 5. すべてのスレッドにメッセージを送信できますか?
- 6. 開いているすべてのウィンドウのウィンドウデータに「バインド」する方法はありますか?
- 7. clp(fd)でプロローグ検索のすべての組み合わせをバインドする方法はありますか?
- 8. Qtの別のスレッドでスロットに信号を送る方法
- 9. JFace ElementTreeSelectionDialogを開いて開く方法はありますか?
- 10. フォームデータをC#コードに "送信"してから、C#でデータを "送信"する方法はありますか?
- 11. adbを開いてコマンドを送信する方法
- 12. このwhileループのすべての反復をスレッドに割り当てる方法はありますか?
- 13. golangは既に開いているfdを受け入れる
- 14. Qt - クラス内のすべてのカスタムスロットと信号のリストを取得する方法はありますか?
- 15. 送信電子メールをプログラムとして送信済みとしてマークする方法はありますか?
- 16. RxSwiftの観測対象に次の信号を手動で送信する方法はありますか?
- 17. Selenium Rubyを使用して開いているすべてのウィンドウからすべての入力タグと送信ボタンを見つける方法は?
- 18. Popen終了時に信号を受信する方法はありますか?
- 19. スレッドがブロックされているかどうかを調べる方法はありますか?
- 20. PHPMailerでメールを送信する方法はありますか?
- 21. 現在のスレッド以外の実行中のスレッドをすべて停止する方法はありますか?
- 22. HTTPリクエストを保存して再送信する方法はありますか?
- 23. Telegram Botが送信したすべてのメッセージを取得する方法はありますか
- 24. ファイルを開く前にファイルが開いているかどうかを知る方法はありますか?
- 25. コマンドKILLはすべての信号を送信できますか?
- 26. すべてのスレッドが使用されているときにnewFixedThreadPoolまたはnewScheduledThreadPoolのスレッド数を増やす方法はありますか?
- 27. nodejsサーバーからデータサーバーを開くためにクエリを送信する方法はありますか?私はオープンデータで働いている
- 28. 子スレッドは無視している信号を返す
- 29. 開発中にJavaアプリケーションが電子メールを送信するのをブロックする方法はありますか?
- 30. 着信番号または発信番号とすべてのログの詳細を取得する方法はありますか?
http://stackoverflow.com/questions/2486335/wakeup-thread-blocked-on-accept-call – Fazlin
に記載されているように 'shutdown()'を使用してください。書き込みしようとすると、SIGPIPEを送信することができます閉じたソケットに接続するか、またはソケットが閉じられていることを示す読み取り値を返すように設定します。 –
しかし、UDPソケットについては、私はSIGPIPEを使用できません – Bionix1441