、Linuxのシグナル

信号を発生させる5つの方法:

  1. 鍵生成:Ctrl + C、Ctrl + Z、CTRL + \
  2. システムコールが生成されます、殺す上げ、baortとして
  3. ソフトウェアの条件が発生します。タイマーのアラーム場合
  4. ハードウェア例外が生成されます。不正アクセスメモリ(バーストエラー)、0(浮動小数点例外)を除いて、メモリアライメントエラー(バスエラー)
  5. コマンド生成:killコマンド

信号四つの要素:

       番号、名前、イベント、デフォルトの処理アクション

信号処理モード:

  1. デフォルトのアクションが実行されます。
  2. 無視(破棄)。
  3. キャプチャー(ユーザー・コールハンドラ)

Linuxカーネルは、task_structのプロセスIDを含むことに加えて、プロセス制御ブロックPCB構造であり、状態は、ディレクトリ、ユーザID、グループID、ファイルディスクリプタ、さらに主に設定された情報に関連する信号を含む作動するブロッキング信号とペンディング信号を指しセット。

       ブロッキング信号(信号ワード遮蔽)を設定する:特定の信号の収集がそれらにシールドを追加し、シールドを信号xは、次いで、(単語の後にマスクされていない)信号プッシュの処理後、受信信号xのとき。

       保留信号セット:

  1. 信号が生成された後、ビットペンディング信号のセットは、直ちに信号が0に対応するビット反転の後に処理され、テーブル信号が保留され、信号wei21を反転します。この瞬間は、多くの場合、非常に短いです。
  2. 信号発生器の後、何らかの理由で(主にブロックする)のために達することができません。このような信号は保留中の信号セットのセットと呼ばれています。シールドを解放する前に、信号が保留されています。

シグナル番号

       -l信号は、現在のシステムがどのように使用することができます表示するために使用することができます殺しますか?

1)SIGHUP 2)SIGINT 3)SIGQUIT 4)シール5)SIGTRAP

6)SIGABRT 7)SIGBUS 8)SIGFPE 9)SIGKILL 10)SIGUSR1

11)SIGSEGV 12)SIGUSR2 13)SIGPIPE 14)SIGALRM 15)SIGTERM

16)SIGSTKFLT 17)SIGCHLD 18)SIGCONT 19)SIGSTOP 20)SIGTSTP

21)SIGTTIN 22)SIGTTOU 23)シグルズ24)SIGXCPU 25)SIGXFSZ

26)SIGVTALRM 27)SIGPROF 28)SIGWINCH 29)SIGIO 30)SIGPWR

31)SIGSYS 34)SIGRTMIN 35)SIGRTMIN 1 + 36)+ 2 SIGRTMIN 37)SIGRTMIN + 3

38)SIGRTMIN 4 + 39)+ 5 SIGRTMIN 40)SIGRTMIN 6 + 41)SIGRTMIN 7 + 42)+ 8 SIGRTMIN

43)SIGRTMIN 9 + 44)+ 10 SIGRTMIN 45)SIGRTMIN 11 + 46)SIGRTMIN 12 + 47)+ 13 SIGRTMIN

48)SIGRTMIN + 14 49)SIGRTMIN + 15 50)SIGRTMAX-14 51)SIGRTMAX-13 52)SIGRTMAX-12

53)SIGRTMAX-11 54)SIGRTMAX-10 55)SIGRTMAX-9 56)SIGRTMAX-8 57)SIGRTMAX-7

58)SIGRTMAX-6 59)SIGRTMAX-5 60)SIGRTMAX-4 61)SIGRTMAX-3 62)SIGRTMAX-2

63)SIGRTMAX-1 64)SIGRTMAX

 

信号の不在は、番号0。数信号が正常信号と呼ばれる特徴1-31は、34から64のリアルタイム信号、運転関連のプログラミングやハードウェアと呼ばれます。

4つの信号要素

同様の変数を持つ3つの要素は、信号4の各々、すなわち、その本質的な要素を有します。

1.ナンバー2.名前3. 4.デフォルトイベントの処理動作

あなたは男7信号によって得られた文書を助けることができます。また/usr/src/linux-headers-3.16.0-30/arch/s390/include/uapi/asm/signal.h見ることができます

信号値アクションコメント

────────────────────────────────────────────

プロセスを制御する端末または死を制御する上で検出されたSIGHUP 1タームハングアップ

キーボードからのSIGINT 2期割り込み

キーボードからSIGQUIT 3コア終了します

SIGILL 4コア不当命令

SIGFPE 8コア浮動小数点例外

SIGKILL 9用語キル信号

SIGSEGV 11コア無効なメモリ参照

SIGPIPE 13期間切れ管:なし読者とパイプへの書き込み

SIGALRM 14アラーム(2)から期間タイマ信号

SIGTERM 15期間終了信号

SIGUSR1 30,10,16用語ユーザ定義信号1

SIGUSR2 31,12,17用語ユーザ定義信号2

SIGCHLD 20,17,18 IGN子が停止または終了します

停止した場合にはSIGCONT 19,18,25続きを続行します

SIGSTOP 17,19,23停止停止プロセス

SIGTSTP 18,20,24停止停止は、端末で入力されました

バックグラウンド・プロセスのためのSIGTTIN 21,21,26ストップターミナル入力

バックグラウンド・プロセスのためのSIGTTOU 22,22,27ストップターミナル出力

  

標準信号では、いくつかの信号は、最初の値は、中間値のx86、ARMおよび他のアーキテクチャのために、最後に適用MIPSアーキテクチャアルファおよびSPARCアーキテクチャの通常有効である、三つの「値」です。A「 - 」信号に対応するスキーマで定義されていない示します。

異なるオペレーティングシステムは、異なるシステム信号を定義します。だから、いくつかの信号は、Unixシステムで表示されるのLinux、FreeBSDの中に表示され、いくつかの信号が表示されますまたはLinuxでのMac OSには表示されません。ここでは、信号のLinuxシステムを自分自身を閉じ込めます。

    デフォルトの動作:

              期間:プロセスを終了

              IGN:信号を無視(デフォルトの瞬間が信号演算の種類を無視)

              コア:コア・ファイルを生成し、プロセスを終了します。(死の識別プロセスの原因、デバッグのためのGDB)

              停止:停止(一時停止)プロセス

              続き:実行中のプロセスを続行します

   注男から7信号ヘルプドキュメントを見ることができます。信号は、SIGKILLとSIGSTOPは、キャッチブロックされた、または無視することはできません。

   ここでは、特別な重点9)SIGKILLおよび19)SIGSTOP信号は無視キャプチャし、デフォルトのアクションを実行することはできません。あなたも、それが目詰まりするように設定することはできません。

また、各イベントに対応した信号のみが発生したことを明確にする、シグナルが配信(必ずしも引き継がれていない)され、無謀に知らせるべきではありません!

Linuxでは、従来の信号の一覧

       1)SIGHUP:ユーザーがシェルを終了すると、シェルによって開始されたすべてのプロセスが、この信号を受信するには、デフォルトの動作はプロセスを終了することです

2)SIGINT:ユーザーが<Ctrlキー+ C>キーの組み合わせを押すと、このユーザ端末がプログラムに信号を送りが実行されている端末によって開始されます。デフォルトのアクション

同様のプロセスを終了します。

3)SIGQUITは<+ \ CTRL>は、ユーザがキーの組み合わせを押したときに信号が生成されると、ユーザ端末は、いくつかのチャネル・プログラムが実行中の端末によって開始される送信します

ナンバー。デフォルトの動作はプロセスを終了することです。

4)SIGILL:CPUは、プロセスが無効な命令を実行し検出します。デフォルトの動作はプロセスを終了することで、コアファイルを生成し、

5)SIGTRAP:この信号は、ブレークポイント命令またはその他の命令トラップによって生成されます。デフォルトのアクションは、走行距離を終了し、コア・ファイルを生成することです。

6)SIGABRT:呼び出しは機能を中止信号を生成します。デフォルトの動作はプロセスを終了することで、コアファイルを生成します。

7)SIGBUS:不正アクセス・メモリアドレス、メモリのアライメント誤差を含むが、デフォルトのアクションは、プロセスを終了することであり、コア・ファイルを生成します。

8)SIGFPE:致命的な算術演算エラーが発行されます。それだけでなく、浮動小数点エラーがゼロエラーとすべての他のアルゴリズムによってオーバーフロー及び除算を含ん含みます。デフォルトの動作はプロセスを終了することで、コアファイルを生成します。

9)SIGKILL:無条件にプロセスを終了。この信号は、処理および障害物を無視することはできません。デフォルトの動作はプロセスを終了することです。これは、システム管理者に任意のプロセスを強制終了する方法を提供します。

10)SIGUSE1:ユーザ定義信号。つまり、プログラマが定義されており、プログラム信号に使用することができます。デフォルトの動作はプロセスを終了することです。

11)SIGSEGVは:プロセスが不正なメモリアクセスであったことを示しています。デフォルトの動作はプロセスを終了することで、コアファイルを生成します。

12)SIGUSR2:追加のユーザ定義信号、およびプログラマは、プログラムで使用される信号を定義することができます。デフォルトの動作はプロセスを終了することです。

13)SIGPIPE:パイプの一端に壊れたパイプは、データを読み書きされていません。デフォルトの動作はプロセスを終了することです。

14)SIGALRM:タイマのタイムアウトは、タイムアウトコールアラームは、システムによって設定されます。デフォルトの動作はプロセスを終了することです。

15)SIGTERM:プログラム終了信号との差がSIGKILLであり、信号がブロックされ、終了することができます。通常、正常にプログラムが終了を示すために使用。実行シェルコマンドが強制終了した場合、この信号はデフォルトで生成されます。デフォルトの動作はプロセスを終了することです。

16)SIGSTKFLT:信号は、Linuxの以前のバージョンが登場、下位互換性を保持しています。デフォルトの動作はプロセスを終了することです。

17)SIGCHLD:子の終わりには、親が信号を受信します。デフォルトの動作は、信号を無視することです。

18)SIGCONT:プロセスが停止している場合、それは動作し続けます。デフォルトのアクションは無視/継続することです。

19)SIGSTOP:実行プロセスを停止します。信号は、処理および障害物を無視することはできません。デフォルトのアクションは、プロセスを中断することです。

20)SIGTSTP:ターミナル対話プロセスの実行を停止。押して、<Ctrl + Z>この信号キーの組み合わせを主張します。デフォルトのアクションは、プロセスを中断することです。

21)SIGTTIN:バックグラウンド・プロセスは、端末コンソールを読み取ります。デフォルトのアクションは、プロセスを中断することです。

22)SIGTTOU:この信号は、プロセスがバックグラウンドのデータ出力端子に発生する、類似SIGTTINあります。デフォルトのアクションは、プロセスを中断することです。

23)SIGURG:ソケットの緊急データがある場合には、現在実行中のプロセスにいくつかの信号を送信、データが到着した緊急報告があります。データが到着するネットワーク帯域は、デフォルトのアクションは、信号を無視することです。

24)SIGXCPU:プロセスの実行時間がプロセスに割り当てられたCPU時間を超えて、システムは、プロセスに送られる信号を生成します。デフォルトの動作はプロセスを終了することです。

25)SIGXFSZ:ファイルには、最大長の設定を超えています。デフォルトの動作はプロセスを終了することです。

26)SIGVTALRM仮想クロックタイムアウト信号を生成します。SIGALRM似ていますが、信号が唯一のプロセスのCPU使用時間を計算しています。デフォルトの動作はプロセスを終了することです。

27)SGIPROF:類似SIGVTALRM、不正プロセスCPU時間は、システムコール時の実装が含ま含みます。デフォルトの動作はプロセスを終了することです。

28)SIGWINCH:ウィンドウのサイズを変更したときに発行されます。デフォルトの動作は、信号を無視することです。

29)SIGIO:この信号は、非同期IOイベントを発行するプロセスを示しています。デフォルトのアクションは無視されます。

30)SIGPWR:シャットダウン。デフォルトの動作はプロセスを終了することです。

31)SIGSYS:無効なシステムコールを。デフォルトの動作はプロセスを終了することで、コアファイルを生成します。

34)SIGRTMIN〜(64)SIGRTMAX:LINUXリアルタイム信号、それらが固定されていないという意味(ユーザが定義することができます)。リアルタイム信号の両方のデフォルトのアクションはすべてのプロセスを終了することです。

おすすめ

転載: www.cnblogs.com/wanghao-boke/p/11320819.html