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 */

関連情報