我必须在while循环中从用户处获得输入,然后采取一些措施。而且我也想在ctrl + c输入中退出我的代码。使用scanf循环处理SIGINT
void my_signal_handler(int sig)
{
running = false;
signal(sig, SIG_IGN);
}
int main(void)
{
struct sigaction sa = {{0}};
sa.sa_handler = &my_signal_handler;
sigemptyset(&sa.sa_mask);
sa.sa_flags = 0;
if (sigaction(SIGINT, &sa, NULL) != 0)
{
fprintf(stderr, "sigaction error\n");
return -1;
}
while(running)
{
printf("enter number: ");
scanf("%d", &num);
// take action based on number
}
}
问题的这个代码是按CTRL + C,它不退出之后,但它等待针对scanf的输入。所以一旦我按下一个额外的键,程序就会退出(信号处理程序被调用)。
如何在按下ctrl + c后删除这个给scanf输入的额外步骤?
你可以通过激励来改善你的问题吗(所以请**编辑你的问题**)? –
顺便说一下,给定的代码不会编译。 'scanf(%d“中有一个双引号缺失,&num);' –