SIGINT,SA_RESETHAND的sigaction

时间:2017-11-23 02:54:22

标签: linux unix signals handler sigaction

有没有办法只处理SIGINT 2次并使用SA_RESETHAND将其恢复为默认值?我们必须使用sigaction,并使我们的处理程序自行重新安装2次,然后安装标志到resethand。但是有一个问题:如何仅重新安装我的处理程序2次以及如何在这种情况下使用RESETHAND? n-1个?

void sig_int(int sig)
{
    printf(" -> Ctrl-C\n");
    struct sigaction act;
    act.sa_handler = SIG_DFL;

    if(sigaction(SIGINT, &act, NULL) < 0)
    {
        exit(-1);
    }

}

int main()
{
    struct sigaction act;
    act.sa_handler = sig_int;

    if(sigaction(SIGINT, &act, NULL) < 0)
    {
        exit(-1);
    }

    while(1)
    {
        sleep(1);
    }

    return 0;   
}

0 个答案:

没有答案