通信アーキテクチャ実用--3-5高度なプログラミング信号、は、sigprocmask例

A:信号が設定
    プロセスは、このプロセスは、現在の信号ブロックされているものを覚えておくことができなければなりません
    000000000000000000000を
    、我々は、以下の(すべてホールド)で表され、60の以上の信号を置くことができる、そのようなデータタイプ(構造)の「信号の組」に必要。
    0000000000,0000000000,0000000000,00,0000000000,0000000000,0000000000,00(64ビット)
    のLinux sigset_t構造タイプは、信号セットによって表される;
    typedefの構造体{
      unsigned long型SIG [2];
    } sigset_t
    信号の定義されたセット。信号セットは、(1)又は来なかった(0)への信号の集合表す
    信号セットに関連するデータ・タイプ:sigset_tと、

 II:信号相関関数
    A)sigemtpyset():すべての信号が0に設定されている、にない60の以上の信号を表していない。
    00000000000000000000000000 .....
    B)sigfillset();すべての信号が集中していますsigemptyset()反対側で、1に設定される。
    11111111111111111111111111 .....
    sigaddset有するC)は()、sigdelset()は、従来の信号を濃度信号を増加させ、又は信号からの信号は、特定の濃度を削除することができます。

    D)は、sigprocmaskは、sigmember
    ;プロセス、信号電流遮断(ブロッキング)を記録する内部信号のセットが存在するであろう
     我々の焦点の信号ビットが、この信号は1に設定されている場合、それは同一の信号を遮蔽手段を、この再び同様の信号、同一の信号が遮断され、プロセスに渡すことができない場合、
     この信号は、信号のビットの数に焦点を当ててきた場合には1に設定され、すべてのこれらの信号は1に設定されてブロックされ、現在に属するれます信号がプロセスに送信されない;
    は、sigprocmask()関数は、信号のセットに対応する処理の内容を設定することが可能です。

3:そのような信号の例としては、sigprocmask機能が実証
    スリープ()関数が中断されていてもよい:
     (1)到達時間、
     睡眠、その値が返されたとき(2)特定の信号、スリープ(へ)は、途中で終了しましたスリープへの十分な時間がありません。

    sigaction()関数。

公開された269元の記事 ウォンの賞賛3 ビュー8413

おすすめ

転載: blog.csdn.net/Xiao2018428/article/details/105056102
おすすめ