[解決済み] Linuxにおける複数スレッドでの信号処理
2022-06-14 16:55:22
質問
Linuxでは、プログラム(複数のスレッドを持つ可能性がある)がSIGTERMやSIGHUPのようなシグナルを受信するとどうなるのでしょうか?
どのスレッドがシグナルを傍受するのでしょうか?複数のスレッドが同じシグナルを受け取ることができますか?シグナルを処理することだけに特化した特別なスレッドがあるのでしょうか?そうでない場合、シグナルを処理するスレッドの内部では何が起こっているのでしょうか?シグナルハンドラ・ルーチンが終了した後、実行はどのように再開されるのでしょうか?
どのように解決するのですか?
これは、使用している Linux カーネルのバージョンによって若干のニュアンスが異なります。
2.6 posix スレッドを仮定し、OS が SIGTERM または SIGHUP を送信することについて話している場合、シグナルはプロセスに送信され、ルートスレッドが受信して処理されます。POSIXスレッドを使用して、同様に個々のスレッドにSIGTERMを送信することもできますが、OSがプロセスにシグナルを送信するときに何が起こるかについて尋ねているのだと思います。
2.6 では、SIGTERM は子スレッドを "cleanly" に終了させますが、2.4 では子スレッドは不確定な状態で残されていました。
関連
-
[解決済み] Valgrind が初期化されていないバイトについて警告する
-
[解決済み] Xcode - 警告。C99 では関数の暗黙の宣言は無効です。
-
[解決済み] Linux Socket write() によるBad File Descriptor C
-
[解決済み] C 言語で const char* を char* に変換するには?
-
[解決済み] c または c++ 用のシンプルな 2 次元クロスプラットフォームグラフィックスライブラリ?[クローズド]
-
[解決済み] Linuxで特定のテキストを含むすべてのファイルを検索するにはどうすればよいですか?
-
[解決済み] Linux上で動作するC++コードのプロファイリングを行うにはどうすればよいですか?
-
[解決済み] C言語のコードで「:-!」とは何ですか?
-
[解決済み] LinuxのシェルスクリプトでYes/No/Cancelの入力を促すにはどうしたらいいですか?
-
[解決済み] ++iとi++の違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[C] Error [Error] 代入の左オペランドとして lvalue が必要です。
-
C++の配列コピー
-
関数 'malloc' の暗黙の宣言に対する解決策
-
未定義の `__isoc99_sscanf' への参照
-
[解決済み] flexible array member not at end of structエラーの原因は何ですか?
-
[解決済み] なぜmemsetではなくbzeroを使用するのですか?
-
[解決済み] 難読化Cコードコンテスト2006。sykes2.cの解説をお願いします。
-
[解決済み] .aファイル、.soファイルとは何ですか?
-
[解決済み] なぜ16進数には0xがつくのですか?
-
[解決済み] C言語で "unsigned long "をprintfする方法は?