用户定义的信号方法

时间:2015-02-17 03:31:14

标签: c

我一直在关注APUE教科书,他们在这里打印了一个打印用户定义信号的例子。

static void sig_usr(int);
/* one handler for both signals */
int
main(void)
{
    if (signal(SIGUSR1, sig_usr) == SIG_ERR)
        err_sys("can’t catch SIGUSR1");
    if (signal(SIGUSR2, sig_usr) == SIG_ERR)
        err_sys("can’t catch SIGUSR2");
    for ( ; ; )
        pause();
}
static void
sig_usr(int signo)
/* argument is signal number */
{
    if (signo == SIGUSR1)
        printf("received SIGUSR1\n");
    else if (signo == SIGUSR2)
        printf("received SIGUSR2\n");
    else
        err_dump("received signal %d\n", signo);
}

有人可以解释SIGUSR1和SIGUSR2的定义方式吗?我知道该函数只是在听别人之前等待捕获适当的信号,但我不明白它是如何知道哪个信号代码是SIGUSR1和SIGUSR2。

1 个答案:

答案 0 :(得分:1)

它们在头文件signal.h中定义。您可以使用kill命令以编程方式发送它们。