很长时间以来,我一直在寻找解决问题的方法,这就是我求助于您的原因:
考虑这段代码:
static char done = 0;
static void sigHandler(void)
{
done = 1;
}
int user_input()
{
return (getchar() == 'q') ? 0 : 1;
}
int main(void)
{
signal(SIGTERM, sigHandler);
signal(SIGINT, sigHandler);
while (user_input() != 0 && !done)
usleep(1000);
printf("exiting\n");
return 0;
}
预期行为:当用户输入 q 然后进入时程序退出。如果CTRL+C被按下,它会被 sigHandler 函数捕获,该函数将标志“done”设置为 1 并退出程序。
观察到的行为:CTRL+C字符被 getchar() 调用吃掉了,sigHandler 函数永远不会执行。当CTRL+C然后按 enter 时,调用 sigHandler 函数并退出程序。
有更多经验和知识的人可以帮助我吗?
感谢您的输入 :)