0

有没有办法只处理 2 次 SIGINT 并使用 SA_RESETHAND 将其恢复为默认值?我们必须使用 sigaction,并让我们的处理程序自行重新安装 2 次,然后安装标志来重置手。但是有一个问题:如何仅重新安装我的处理程序 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;   
}
4

0 回答 0