[解決済み] sigprocmask() の Set と Oldset について
質問
の使い方がよくわかりません。
sigprocmask()
. 特に、どのように
set
と
oldset
とその構文の働きと使い方を説明します。
int sigprocmask(int how, const sigset_t *set, sigset_t *oldset);
SIGUSR1 を数秒間ブロックし、その後ブロックを解除して処理する例を挙げて説明してください。
どのように解決するのですか?
でマスクを提供することです。
set
これは事実上、シグナルのリストである。 そのため
how
のマスクをどうするかは、引数で指定します。
set
.
を使用することができます。
SIG_BLOCK
のシグナルをブロックするために
set
リスト、または
SIG_UNBLOCK
を使ってブロックを解除することができます。 どちらもリストに設定されていないシグナルは変更されません。
SIG_SETMASK
はリスト内のシグナルをブロックし、リスト内に設定されていないシグナルはブロックを解除します。
例えば、古いブロッキングリストが
{SIGSEGV, SIGSUSP}
を呼び出すと
sigprocmask
をこれらの引数で指定します。
sigset_t x;
sigemptyset (&x);
sigaddset(&x, SIGUSR1);
sigprocmask(SIG_BLOCK, &x, NULL)
新しいブロックリストは、次のようになります。
{SIGSEGV, SIGSUSP, SIGUSR1}
.
を呼び出すと
sigprocmask
をこれらの引数で今すぐ実行します。
sigprocmask(SIG_UNBLOCK, &x, NULL)
新しいブロックリストが
{SIGSEGV, SIGSUSP}
.
を呼び出すと
sigprocmask
をこれらの引数で今すぐ実行します。
sigprocmask(SIG_SETMASK, &x, NULL)
これで、新しいブロックリストには
{SIGUSR1}
.
は
oldset
引数は、前のブロックリストが何であったかを教えてくれます。 もし、この宣言があれば
sigset_t y;
で、前の例のコードをこのように呼び出します。
sigprocmask(SIG_BLOCK, &x, &y)
今、私たちは
y == {SIGSEGV, SIGSUSP}
もし今、私たちが
sigprocmask(SIG_UNBLOCK, &x, &y)
を取得します。
y == {SIGSEGV, SIGSUSP, SIGUSR1}
とすると
sigprocmask(SIG_SET, &x, &y)
を取得します。
y == {SIGSEGV, SIGSUSP}
なぜなら、これはブロック化セットの前の値だからです。
関連
-
[解決済み】Cコンパイルエラー。"変数サイズのオブジェクトが初期化されていない可能性がある"
-
[解決済み] strtokのセグメンテーションフォールト
-
[解決済み】ポインタへの代入時に互換性のないポインタ型からの初期化警告が発生した
-
[解決済み】エラー。非スカラー型への変換を要求された
-
[解決済み】LinuxのI_PUSHに相当するもの
-
[解決済み】エラー:呼び出されたオブジェクトは、関数または関数ポインタではない
-
[解決済み] SQLiteのINSERT/per-secondのパフォーマンスを向上させる
-
[解決済み] 1ビットのセット、クリア、トグルはどのように行うのですか?
-
[解決済み] const int*、const int * const、int const *の違いは何ですか?
-
[解決済み] 何が私のプロセスを殺したのか、なぜなのか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】式は、単純なポインタ演算を使用して完全なオブジェクト型へのポインタでなければなりません【重複】。
-
[解決済み】ポインタと整数の比較で警告が出る
-
[解決済み】Cygwin - Makefile-error: ターゲット `main.o' のレシピに失敗しました。
-
[解決済み】「構造体でもユニオンでもないものにメンバー'*******'を要求する」とはどういう意味ですか?
-
[解決済み】C 未知の型名「my_structure」。
-
[解決済み】fgetsによるセグメンテーションフォールト(コアダンプ) - と思う。
-
[解決済み] char pointers: 'char*' から 'char' への無効な変換?
-
[解決済み】C言語のフォーマット文字列でデータ引数が使用されない [重複]。
-
[解決済み] '{'トークンの前に期待される式
-
[解決済み】エラー:呼び出されたオブジェクトは、関数または関数ポインタではない