私は自分の問題の解決策を長い間探していたので、あなたに頼っています:
次のコードを検討してください。
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 を入力して Enter すると、プログラムは終了します。CTRL+が押されるとC、フラグ「done」を 1 に設定してプログラムを終了する sigHandler 関数によって捕捉されます。
観察された動作: CTRL+C文字は getchar() 呼び出しによって食べられ、sigHandler 関数は実行されません。CTRL+をC押してから Enter を押すと、sigHandler 関数が呼び出され、プログラムが終了します。
より多くの経験と知識を持っている人が私を助けてくれますか?
ご意見ありがとうございます:)