我必须弄清楚如何编写循环但不能使用CTRL-C退出5秒的编程,但是在5秒后我可以使用CTRL-C结束程序。我一直在阅读系统调用,什么不是,但我无法弄清楚从哪里开始。如果有人能指出我正确的方向,这里有确切的说明。谢谢。
编写一个C程序,它使用系统调用创建一个循环,并且不能用控件C杀死五秒钟。当它开始时它打印“我已经开始循环,不能用^ C杀死。 。 “然后每隔一秒打印一条消息”静止循环。 。 “五秒钟之后允许用控件C杀死循环并显示消息”我仍在循环但我可以用^ C杀死...“这会每秒显示一次,直到用户杀死它。
答案 0 :(得分:1)
您想查看signal(2)
界面。当在UNIX / Linux环境中发生某些与进程相关的事件时,操作系统将向进程发送信号(实质上是软件中断)。您可以使用signal
函数“捕获”一个信号来设置一个回调函数,该函数会在给定信号发生时得到通知。对于Ctrl-C,您希望查看SIGINT,但是您可以使用相同的界面处理其他信号。至于暂停,这很容易 - 只需在循环中使用sleep()
。
答案 1 :(得分:1)
你可以使用这个。
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 message\n");
}
}
首先使用singal忽略SIGINT。和sigalrm的处理程序。所以前5秒ctrl+c
将不起作用。在ctrl + c运行后找到sigalrm
时。因此,根据您在特定时间段内的问题ctrl+c
将被停止。