トップページ > キーワード検索 > signal()
C言語規格
C言語(その他)
プログラム
その他
signal()
機能 シグナルを受け取ったときの操作を設定する。
定義 #include <signal.h>

void (*signal ( int sig, void (*func)(int) ) ) (int);
引数
sig設定するシグナル番号。シグナル番号は以下のいずれかを選択する
マクロ名シグナル
SIGABRT異常終了信号
SIGFPE浮動小数点異常信号
SIGILL不正命令信号
SIGINT割り込み信号
SIGSEGV区画違反信号
SIGTERM終了信号
func実行する関数、または、シグナル処理マクロ
※実行する関数の引数には発生したシグナル番号が渡される
※シグナル処理マクロを指定する場合は以下のいずれかを選択する
マクロ名処理
SIG_DFL既定の操作を行う
SIG_IGNシグナルを無視する
戻り値 以前に設定されたfuncの値を返す。
指定された操作が処理できない場合、SIG_ERRを返してerrnoに正の値を格納する。
実装例
#include <signal.h>
#include <stdio.h>

static volatile sig_atomic_t flag = 0;

void func(int sig)
{
    if (SIGINT == sig) {
        flag = 1;  /* 割込み信号が入った時はflagを 1 にする */
    }
}

int main(void)
{
    signal( SIGINT, func );  /* Ctrl+Cなどの割込み信号が入った時はfunc関数を呼ぶ */
    
    printf("Wait for SIGINT to occur.\n");
    while ( flag == 0 ) { }   /* flagが0以外になるまでループ */
    printf("SIGINT occurred.\n");
    
    return 0;
}
実行結果
Wait for SIGINT to occur.
(Ctrl+Cを押下)
SIGINT occurred.





inserted by FC2 system