在终端中设置Ctrl + C时,在C中执行最后一个功能

时间:2014-03-27 17:33:19

标签: c linux terminal

  1. 我有一个正在运行的C程序(在终端中)

  2. 我的程序有一个循环(例如while(1){}),

  3. 所以如果我想停止它,我必须按ctrl + C

  4. 我的问题:

    当我按下Ctrl + C时,有没有办法在我的C程序中运行最后一个函数?

    例如我在我的linux终端输入了Ctrl+C然后我的程序检测到我输入Ctrl+C并打印出“再见”或打开文件等内容。

    希望,你了解我。

    提前致谢。

2 个答案:

答案 0 :(得分:1)

您需要使用signal调用来安装SIGINT信号的处理程序。

答案 1 :(得分:1)

按ctrl + c时,会生成信号SIGINT。所以你需要写一个函数来捕获那个信号。为此你可以写一个函数说,

void catch_signal_ctrlC(int s)
{
//...
  printf("Bye");
}

然后将信号寄存器记录为,

signal(SIGINT, catch_signal_ctrlC)

这个系统调用将注册catch_signal_ctrlC()函数来捕获SIGINT,即每当你按下终端中的ctrl + c时它就会被调用