我必须弄清楚如何编写一个循环但无法使用 CTRL-C 退出 5 秒的编程,但 5 秒后我可以使用 CTRL-C 结束程序。我一直在阅读系统调用之类的内容,但我不知道从哪里开始。这是确切的说明,如果有人可以指出我正确的方向。谢谢。
编写一个 C 程序,该程序使用创建循环的系统调用,并且不能在五秒钟内用控件 C 杀死。 当它开始时,它打印"我已经开始循环,不能用^C杀死。 然后它每隔一秒就会打印一条消息,上面写着"仍在循环......"。 五秒钟后,允许使用控件 C 杀死循环并显示消息"我仍在循环,但我可以用 ^C 杀死......"这每秒显示一次,直到用户杀死它。
你想看看signal(2)
界面。 当 UNIX/Linux 环境中发生某些与进程相关的事件时,操作系统将向进程发送信号(实质上是软件中断(。 您可以使用 signal
函数"捕获"信号,以设置在给定信号发生时收到通知的回调函数。 对于 Ctrl-C,您需要查看 SIGINT,但您可以使用相同的界面处理其他信号。 至于暂停,这很容易 - 只需循环使用sleep()
即可。
使用这个。
void handler(int signo)
{
signal(SIGINT,SIG_DFL);
}
main()
{
signal(SIGINT,SIG_IGN);
signal(SIGALRM,handler);
// your code.
alarm(5);// for 5 seconds.
while(1)
{ sleep(1);
printf("your messagen");
}
}
首先忽略使用单曲的SIGINT。和西加尔姆的处理程序。所以前 5 秒ctrl+c
不起作用。当找到sigalrm
后,ctrl+c 将起作用。因此,根据您的特定时间段的问题,ctrl+c
将被停止。