Linux信号処理--デフォルトの信号処理動作

3489 ワード

一部の信号のデフォルトの処理方法は「終了+core」であり、ここでcoreは、プロセスが終了すると、debuggerデバッグ用に後で使用できるように、プロセスの現在の作業ディレクトリにcoreファイルが生産されることを示しています.
        core  :

   (1)      set-user-ID            ;

   (2)      set-group-ID             ;

   (3)                ;

   (4)         core       core       ;

   (5)core    。

各種信号発生条件とデフォルトの処理方法は以下の通りである.
SIGABRTデフォルト処理方式:終了+core;プログラムがabort関数を呼び出すと、この信号が生成されます.プログラム異常終了.
SIGALRMデフォルト処理方式:終了;この信号は、alarmまたはsetimer関数によって設定されたタイマが超過すると生成されます.
SIGBUSのデフォルト処理方法:終了+core;メモリエラーによってこの信号が発生することが多い.
SIGCHLDのデフォルトの処理方法:無視;プロセスterminateまたはstoppedの場合、この信号は親プロセスに送信されます.親プロセスがサブプロセスがいつ終了するかを知る必要がある場合は、親プロセスは信号を取得する必要があります.通常、この信号のキャプチャ関数でwaitまたはwaitpidが呼び出され、サブプロセスのpidおよび終了状態が取得される.
SIGCONTのデフォルトの処理方法:無視/続行;ジョブ制御コマンドプロセスが実行を続けると、その信号がプロセスに送信されます.プロセスが以前に停止された場合、信号のデフォルトの処理はプロセスの実行を継続することである.そうでなければ、信号は無視されます.
SIGFPEデフォルト処理方式:終了+core;演算エラー(ゼロ除去、オーバーフローなど)が発生すると、この信号が生成されます.
SIGHUPデフォルト処理方式:終了;端末インタフェースが接続切断を検出すると、カーネルは制御端末とのセッションリーダープロセスにこの信号を送信する(端末のCLOCAL識別ビットが設定されていない場合にのみ送信される).受信信号のsession leaderはバックグラウンドプロセスである可能性があり、これは通常の端末が生成した信号とは異なり、通常の端末信号受信者はフロントプロセスグループである.また、制御端末のセッションリーダーが終了すると、SIGHUP信号がフロントプロセスグループに送信される.デーモンプロセスには制御端末がないため、通常は受信すべきではないため、この信号はデーモンプロセスがプロファイルを再読み込みする信号としてよく用いられる.
SIGILLデフォルト処理方式:終了;プロセッサが不正な命令を実行すると、信号が生成されます.
SIGINTのデフォルトの処理方法:終了;端末に端末キー(Control+CまたはDELETE)が入力されると、端末はSIGINT信号を生成する.この信号はフロントプロセスグループに送信される.通常、実行中のプロセスを終了するために使用されます.
SIGIOのデフォルトの処理方法:終了/無視;この信号は、非同期IOモードを提供するために使用される.IOが利用可能である場合、この信号通知プロセスが生成される.
SIGKILLデフォルト処理方式:終了;この信号は、通常kill関数またはコマンドによって任意のプロセスを終了する能力をスーパーユーザに提供する.この信号は無視またはキャプチャできません.
SIGPIPEデフォルト処理方式:終了;閉じた読者のパイプにデータを書くと、この信号が発生します.同じく未接続のSOCK_へSTREAMタイプのsocketでもデータを書き込むと、その信号が発生します.
SIGPOLLデフォルト処理方式:終了;指定されたイベントが選択可能なデバイスで発生すると、この信号が生成される.
SIGPROFデフォルト処理方式:終了;setitimerによって設定された間隔タイマがタイムアウトすると、この信号が生成されます.
SIGPWRデフォルト処理方式:終了;システムにUPS(Uniterruptible Power Supply、すなわちバッテリ)がある場合、電源が切れた後にバッテリを使用し、バッテリの電力が低い場合、この信号通知プロセスは1530秒以内に停止する.
SIGQUITデフォルト処理方式:終了+core;終了キー(Control+)が入力されると、端末はSIGQUIT信号を生成し、フロントプロセスグループに送信する.
SIGSEGVのデフォルト処理方法:終了+core;メモリリファレンスが不正な場合、この信号が生成されます.
SIGSTOPデフォルト処理方式:プロセスを停止する;プロセスを停止するためのジョブ制御信号.この信号は無視またはキャプチャできません.
SIGSYSのデフォルト処理方法:終了+core;不正なシステム呼び出しの場合、この信号が生成されます.
SIGTERMデフォルト処理方式:終了;kill関数は、プロセスを終了するためにデフォルトで送信される信号です.
SIGTRAPのデフォルト処理方法:終了+core;システム定義のハードウェアエラー.通常、デバッグブレークポイントに遭遇した場合、debuggerに制御権が渡されます.
SIGTSTPデフォルト処理方式:プロセスを停止する;保留キー(Control+Z)が入力されると、端末はこの(インタラクティブ停止)信号を生成してプロセスを停止する.この信号はフロントプロセスグループに送信される.
SIGTTINデフォルト処理方式:プロセスを停止する;バックグラウンドプロセスグループのプロセスが制御端末からデータを読み出すことを要求すると、この信号が生成される.2つの例外があります.1、データの読み取りを要求するバックグラウンドプロセスが信号を無視またはブロックし、2、プロセスが属するプロセスグループが「孤児」です.どちらの場合も、信号は生成されません.そうしないと、readはエラーを返し、errnoをEIOに設定します.
SIGTTOUデフォルト処理方式:プロセスを停止する;バックグラウンドプロセスグループのプロセスが制御端末にデータを書き込むように要求すると、この信号が生成される.バックグラウンドプロセスは、制御端末へのデータの書き込みを許可することができる.バックグラウンドプロセスが制御端末にデータを書き込むことを許可しない場合、writeはエラーを返し、errnoをEIOに設定します.2つの例外があります.1、データの書き込みを要求するバックグラウンドプロセスが信号を無視またはブロックし、2、プロセスが属するプロセスグループが「孤児」です.どちらの場合も、この信号は生成されません.
SIGURGのデフォルトの処理方法:無視;この信号は、ネットワーク接続(Socket)が帯域外データ(out-of-band data)を受信すると生成される.
SIGUSR 1デフォルト処理方式:終了;ユーザがカスタマイズした信号.
SIGUSR 2デフォルト処理方式:終了;ユーザがカスタマイズした信号.
SIGVTALRMデフォルト処理方式:終了;setitimerによって設定された仮想タイマがタイムアウトし、この信号が生成される.
SIGXCPUデフォルト処理方式:終了+core/無視;プロセスがCPUのソフトリミットを超えた場合に発生します.
SIGXFSZのデフォルト処理方法:終了+core/無視;プロセスがファイルサイズのソフトリミットを超えた場合、この信号が生成されます.
https://www.cnblogs.com/jiangzhaowei/p/4113644.html