0

私はUnixで信号処理を学んでいて、何が何で、何をしているのかを理解するのに苦労SIG_SETMASKo_setsigprocmask() いますか?

setブロックまたはブロック解除する信号のリストが含まれていることを理解し、リスト内の信号をSIG_BLOCKブロックしてブロックをSIG_UNBLOCK解除します。

sigprocmask(SIG_SETMASK,&set,& o_set);
4

1 に答える 1

3

Linuxのマンページはこれをよく説明しています。

信号マスクの以前の値は、そのパラメーターがnullでない場合、最後のパラメーター(古いセット)に格納されます。

SIG_SETMASK現在の信号セットを設定します。それについてこれ以上何を言うべきかわかりません-SIG_BLOCKそしてSIG_UNBLOCK現在の信号マスクを2番目のパラメータと組み合わせて、SIG_SETMASK現在の値に関係なくそれを設定します。

POSIXはそれを次のように説明しています:

SIG_BLOCK
結果のセットは、現在のセットとセットが指す信号セットの和集合になります。 SIG_SETMASK
結果のセットは、セットが指す信号セットになります。
SIG_UNBLOCK
結果のセットは、現在のセットと、セットが指す信号セットの補集合との共通部分になります。

于 2013-01-06T15:48:12.670 に答える