raise() — シグナルの送信
形式
#include <signal.h>
int raise(int sig);言語レベル
ANSI
スレッド・セーフ
はい
説明
raise() 関数は、実行中のプログラムにシグナル sig を送信します。 コンパイル・コマンドで SYSIFCOPT(*ASYNCSIGNAL) を使用してコンパイルされた場合、
この関数は非同期シグナルを使用します。 この関数の非同期バージョンは、プロセスまたはスレッドにシグナルをスローします。
戻り値
raise() 関数は、正常に実行された場合は 0 を戻し、正常に実行されなかった場合はゼロ以外を戻します。
例
この例では、シグナル SIGUSR1 に対してシグナル・ハンドラー sig_hand を設定します。 シグナル・ハンドラーは、シグナル SIGUSR1 が出されるたびに呼び出されますが、
シグナルは、最初に出されてから 9 回までは無視されます。 10 回目に出されたシグナルで、プログラムはエラー・コード 10 で終了します。 シグナル・ハンドラーは、呼び出すたびに再設定する必要があることに注意してください。
#include <signal.h>
#include <stdio.h>
void sig_hand(int); /* declaration of sig_hand() as a function */
int main(void)
{
signal(SIGUSR1, sig_hand); /* set up handler for SIGUSR1 */
raise(SIGUSR1); /* signal SIGUSR1 is raised */
/* sig_hand() is called */
}
void sig_hand(int sig)
{
static int count = 0; /* initialized only once */
count++;
if (count == 10) /* ignore the first 9 occurrences of this signal */
exit(10);
else
signal(SIGUSR1, sig_hand); /* set up the handler again */
}
/* This is a program fragment and not a complete program */関連情報
- signal() — 割り込みシグナルを処理する
- シグナル処理アクションの定義
- <signal.h>
- インフォメーション・センターの API トピックにあるシグナル API。
- インフォメーション・センターの API トピック内の POSIX スレッド API。