C ライブラリ関数 -sigismember()
説明
sigismemberこの関数は C 標準ライブラリ内の関数であり、特定のシグナルがシグナルセット内にあるかどうかを確認するために使用されます。この関数は、<signal.h>ヘッダーファイル内で定義されています。
構文
int sigismember(const sigset_t *set, int signo);
引数
const sigset_t *set:は、sigset_t型のシグナルセット変数を指します。int signo:チェックするシグナル番号です。
戻り値
- シグナルがシグナルセット内にある場合、1 を返します。
- シグナルがシグナルセット内にない場合、0 を返します。
- エラーが発生した場合は -1 を返し、
errnoエラーの種類を示すために errno を設定します。
例
以下は、sigismember関数を使用した、シグナルセットに特定のシグナルが含まれているかを確認するサンプルプログラムです。このプログラムは空のシグナルセットを初期化し、SIGINTシグナルをシグナルセットに追加し、シグナルセットにSIGINTシグナルが含まれているかを確認します。
例
#include <stdio.h>
#include <signal.h>
int main() {
sigset_t set;
// シグナルセットを空に初期化する
if (sigemptyset(&set) == -1) {
perror("sigemptyset");
return 1;
}
// SIGINT をシグナルセットに追加する
if (sigaddset(&set, SIGINT) == -1) {
perror("sigaddset");
return 1;
}
// シグナルセットに SIGINT が含まれているかを確認する
if (sigismember(&set, SIGINT)) {
printf("SIGINT is in the set\n");
} else {
printf("SIGINT is not in the set\n");
}
// シグナルセットに SIGTERM が含まれているかを確認する
if (sigismember(&set, SIGTERM)) {
printf("SIGTERM is in the set\n");
} else {
printf("SIGTERM is not in the set\n");
}
return 0;
}
#include <signal.h>
int main() {
sigset_t set;
// シグナルセットを空に初期化する
if (sigemptyset(&set) == -1) {
perror("sigemptyset");
return 1;
}
// SIGINT をシグナルセットに追加する
if (sigaddset(&set, SIGINT) == -1) {
perror("sigaddset");
return 1;
}
// シグナルセットに SIGINT が含まれているかを確認する
if (sigismember(&set, SIGINT)) {
printf("SIGINT is in the set\n");
} else {
printf("SIGINT is not in the set\n");
}
// シグナルセットに SIGTERM が含まれているかを確認する
if (sigismember(&set, SIGTERM)) {
printf("SIGTERM is in the set\n");
} else {
printf("SIGTERM is not in the set\n");
}
return 0;
}
上記のサンプルプログラムを実行した場合の出力結果は次のとおりです:
SIGINT is in the set SIGTERM is not in the set
プログラムは空のシグナルセットを初期化し、SIGINTシグナルをシグナルセットに追加し、シグナルセットにSIGINTとSIGTERMシグナルが含まれているかを確認しました。結果は、SIGINTシグナルはシグナルセット内にあり、SIGTERMシグナルはシグナルセット内にありません。
解説
sigset_t set;:シグナルセット変数を定義します。- を使用して
sigemptyset関数はシグナルセットを空に初期化します。 - を使用して
sigaddset関数はSIGINTシグナルをシグナルセットに追加します。 - を使用して
sigismember関数はシグナルセットにSIGINTとSIGTERMシグナルが含まれているかを確認します。 - 出力は次のことを示しています:
SIGINTシグナルはシグナルセット内にあり、SIGTERMシグナルはシグナルセット内にありません。
注意事項
sigismember関数は、特定のシグナルがシグナルセット内にあるかどうかを確認するために使用されます。- シグナル番号が無効な場合、
sigismember関数は -1 を返し、errnoエラーの種類を示すために errno を設定します。
C 標準ライブラリ - <signal.h>