[英]Why doensn't Ctrl+C doesn't work in my terminal?
我有以下问题:
我在 main 中创建了两个线程。 这些线程永远不会停止(它们总是在监听消息)。
所以,在 main 中,在创建这两个线程之后,我有这个片段代码来保持程序运行:
for (;;)
{
sleep(10);
}
return 0;
它有效,但问题是当我执行程序时,在终端中, Ctrl+C
不允许我退出程序。 我必须退出Ctrl+\\
。 我有这个功能(不是我做的)。 问题出在哪儿?
void app_signal_handler(int sig_num)
{
if (sig_num == SIGINT) {
printf("SIGINT signal!\n");
}
if (sig_num == SIGTERM) {
printf("SIGTERM signal!\n");
}
app_running = false;
}
char app_sigaltstack[SIGSTKSZ];
int app_setup_signals(void)
{
stack_t sigstack;
struct sigaction sa;
int ret = -1;
sigstack.ss_sp = app_sigaltstack;
sigstack.ss_size = SIGSTKSZ;
sigstack.ss_flags = 0;
if (sigaltstack(&sigstack, NULL) == -1) {
perror("signalstack()");
goto END;
}
sa.sa_handler = app_signal_handler;
sa.sa_flags = SA_ONSTACK;
if (sigaction(SIGINT, &sa, 0) != 0) {
perror("sigaction()");
goto END;
}
if (sigaction(SIGTERM, &sa, 0) != 0) {
perror("sigaction()");
goto END;
}
ret = 0;
END:
return ret;
}
你从不使用app_running
。 代替
for (;;)
{
sleep(10);
}
和
while (app_running)
{
sleep(10);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.