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