【发布时间】:2020-03-31 01:15:08
【问题描述】:
我正在学习信号。在以下代码中,如何在输入 CTRL-C 信号后在 while 循环内继续打印提示。还有如何用 CTRL-D 信号终止进程。
int main(int argc, char *argv[]){
struct sigaction sh;
sh.sa_handler = sigint_handler;
sigemptyset(&sh.sa_mask);
sh.sa_flags = 0;
sigaction(SIGINT, &sh, NULL);
while(1)
{
printf("Some prompt: ");
}
return 0;
}
【问题讨论】:
-
你需要显示更多的代码(例如
sigint_handler()函数),你还需要使用更少的代码(使用int main(void),因为你不关注argc或@ 987654329@)。不要忘记默认情况下,标准输出将是行缓冲的。这意味着在缓冲区填满之前您不会看到提示。 -
同时进行搜索。关于如何忽略和处理信号存在很多问题。甚至还有一个问题与这个问题几乎相同:stackoverflow.com/questions/2485028/signal-handling-in-c。
-
这能回答你的问题吗? Signal Handling in C