有没有办法只处理 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;
}