標準/拡張機能 | C/C++ | 依存項目 |
---|---|---|
POSIX.1 |
両方 |
#define _POSIX_SOURCE
#include <signal.h>
int sigismember(const sigset_t *set, int signal);
指定シグナル番号 signal が、シグナル・セット set のメンバーであるかどうかを テストします。
sigismember() は、シグナル・セットを操作する関数のファミリーの 一部です。 シグナル・セット とは、シグナル・グループを 1 つのプロセスにより経過の記録を取るためのデータ・オブジェクトです。例えば、プロセスにより、ブロック化しているシグナルを 記録する 1 つのシグナル・セット、および保留中のシグナル を記録する別のシグナル・セットを作成できます。シグナル・セットは、その他の関数 (sigprocmask() など) で使用される シグナルのグループを操作するか、またはその他の 関数 (sigpending() など) で戻されるシグナル・セットを検査する ために使用されます。
アプリケーションは、sigemptyset() または sigfillset() のどちらかを、 sigset_t 型のオブジェクトが他に使用される前に、各オブジェクトに対して少なくとも 1 回は 呼び出すべきです。そのようなオブジェクトが、この方法で初期化されていないにもかかわらず、 引数として pthread_sigmask()、sigaction()、sigaddset()、sigdelset()、 sigismember()、sigpending()、sigprocmask()、sigsuspend()、sigtimedwait()、sigwait()、 または sigwaitinfo() のどれかに指定された場合、その結果は未定義です。
この関数では、SIGTHSTOP および SIGTHCONT シグナルの使用はサポートされていません。
sigismember() は、signal が set 中にある場合には、1 を戻し、ない場合には 0 を戻します。
⁄* CELEBS19
This example tests signals.
*⁄
#define _POSIX_SOURCE
#include <stdio.h>
#include <signal.h>
void check(sigset_t set, int signum, char *signame) {
printf("%-8s is ", signame);
if (!sigismember(&set, signum))
printf("not ");
puts("in the set");
}
main() {
sigset_t sigset;
sigemptyset(&sigset);
sigaddset(&sigset, SIGUSR1);
sigaddset(&sigset, SIGKILL);
sigaddset(&sigset, SIGCHLD);
check(sigset, SIGUSR1, "SIGUSR1");
check(sigset, SIGUSR2, "SIGUSR2");
check(sigset, SIGFPE, "SIGFPE");
check(sigset, SIGKILL, "SIGKILL");
}
SIGUSR1 is in the set
SIGUSR2 is not in the set
SIGFPE is not in the set
SIGKILL is in the set