シグナルハンドラを書く最小サンプル

#include <signal.h>
#include <stdio.h>
#include <unistd.h>

void sigcatch(int);

int main() {
    pid_t pid = getpid();
    printf("PID:%d\n", pid);

    if (SIG_ERR == signal(SIGHUP, sigcatch)) {
        printf("failed to set signal handler.n");
        exit(1);
    }

    if (SIG_ERR == signal(SIGINT, sigcatch)) {
        printf("failed to set signal handler.n");
        exit(1);
    }

    while (1) {
        sleep(1);
    }

    return 0;
}

void sigcatch(int sig) {
    printf("catch signal %d\n", sig);
    exit(1);
}

実行時に表示されるプロセスIDに対して,kill -INT XXXXXkill -HUP XXXXXをするとシグナルハンドラが実行される.
プロセスIDを調べるときは上記サンプルのように,プロセスIDを標準出力してもよいし, ps u | grep a.outという感じでコマンドを打って確認してもよい.