C语言 使用系统调用时出现问题



我必须弄清楚如何编写一个循环但无法使用 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将被停止。

最新更新