sigsuspend

シグナルの到着を待つシステムコールです。シグナルを受信するまでプロセスは停止します。

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

static void func_int() {}

int main()
{
    struct sigaction act;
    sigset_t set;
    
    memset(&act, 0, sizeof act);
    act.sa_handler = func_int;
    if (sigaction(SIGINT, &act, NULL) < 0){
        perror("sigaction");
        return 1;
    }
    sigemptyset(&set);
    sigsuspend(&set);
    write(2, "SIGINT\n", 7);
    return 0;
}