シグナル処理とは? わかりやすく解説

シグナル処理

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2020/11/20 15:23 UTC 版)

イベントループ」の記事における「シグナル処理」の解説

UNIXファイルインタフェース従わない数少ない例として、非同期イベントシグナル)がある。シグナルはシグナルハンドラで受信する。シグナルハンドラは小さな制限されコードであり、それが動作中はプログラム本体の処理はサスペンドされる。select()ブロック中にシグナル受信して処理した場合selectはEINTRというエラーコード伴って早期に戻る。プログラムCPU使用している間にシグナル受信すると、シグナルハンドラを実行する間は本体実行サスペンドされる。 したがってシグナル考慮するには、シグナルハンドラで大域変数フラグセットしイベントループselect()呼び出し直前直後でそのフラグチェックすればよい。フラグセットされていたら、ファイル記述子でのイベント同様にシグナル処理するしかしながら、この技法では競合状態生じる。フラグチェックselect()呼び出しの間にシグナル到着した場合select()が他の理由で戻るまでシグナルを処理できない。 この問題解決するため、POSIXではpselectシステムコール提供している。これはselect似ているがsigmaskという引数追加されており、シグナルマスク設定できる。これを使えば普段シグナルマスクしておき、select呼び出している間だけマスク解除することができる。すると、シグナルselectイベント待ち受けている間だけ受信されることになる。ただし、pselect()利用可能となったのは比較最近のことで、たとえばLinuxの場合Linuxカーネルバージョン2.6.16より以前の版ではpselect()システムコール実装されておらず、glibcでは競合状態問題はらんだ実装なされていた。 より汎用的代替技法として、非同期イベントをself-pipe trick呼ばれる技法でファイルベースのイベント変換してやる技法がある。これはシグナルハンドラでパイプ1バイト書き込み、そのパイプのもう一方の端を主プログラムselect監視するという技法である。Linuxカーネル 2.6.22では、signalfd()という新システムコール追加された。これはシグナル受信用の特別なファイル記述子生成する

※この「シグナル処理」の解説は、「イベントループ」の解説の一部です。
「シグナル処理」を含む「イベントループ」の記事については、「イベントループ」の概要を参照ください。


シグナル処理

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/10/07 06:02 UTC 版)

シグナル (Unix)」の記事における「シグナル処理」の解説

signal()やsigaction()英語版システムコールは「シグナルハンドラ」を設定するのに使われる。シグナルハンドラが設定されていないシグナル場合デフォルトハンドラ使われるさもなくばシグナル捉えられ、シグナルハンドラが呼び出されるプロセスハンドラ設定しなくとも2種類デフォルト動作指定できるシグナル無視するか(SIG_IGN)、デフォルトハンドラを使うか(SIG_DFL)である。SIGKILLとSIGSTOPは、捉えることもハンドラ処理することもできないシグナルである。

※この「シグナル処理」の解説は、「シグナル (Unix)」の解説の一部です。
「シグナル処理」を含む「シグナル (Unix)」の記事については、「シグナル (Unix)」の概要を参照ください。

ウィキペディア小見出し辞書の「シグナル処理」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「シグナル処理」の関連用語

シグナル処理のお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



シグナル処理のページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、Wikipediaのイベントループ (改訂履歴)、シグナル (Unix) (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2025 GRAS Group, Inc.RSS