我一直在尋找一個解決我的問題很長一段時間,這就是爲什麼我要轉你:通過的getchar吃掉按Ctrl-C()
考慮這段代碼:
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 + Ç字符被的getchar()調用吃掉,從不執行所述sigHandler功能。當CTRL + C然後按下,sigHandler函數被調用並且程序退出。
能有更多經驗和知識的人幫我解決那個問題嗎?
感謝您的輸入:)
即使這是我一開始不想做的事情,我已經通過不使用標誌並從處理程序中退出來解決了我的問題。 –