如何在Linux中按Ctrl + C中断事件处理?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (128)

我正在开发一个使用C ++并使用Linux GNU C编译器进行编译的应用程序。但我想在用户使用CtrlC 键中断脚本时调用一个函数。我该怎么办?

提问于
用户回答回答于

我提供了一个简单的例子吧,应该对你有帮助:

#include <stdio.h>
#include <stdlib.h>
#include <signal.h> //  our new library 
volatile sig_atomic_t flag = 0;
void my_function(int sig){ // can be called asynchronously
  flag = 1; // set flag
}

int main(){
  // Register signals 
  signal(SIGINT, my_function); 
  //      ^          ^
  //  Which-Signal   |-- which user defined function registered
  while(1)  
    if(flag){ // my action when signal set it 1
        printf("\n Signal caught!\n");
        printf("\n default action it not termination!\n");
        flag = 0;
    }     
  return 0;
}  
用户回答回答于

输入CtrlC通常会导致shell发送SIGINT到你的程序。为该信号添加一个处理程序,你可以在CtrlC按下时做你喜欢的事情。

或者,如果你只关心在程序退出之前进行清理,则通过设置退出处理程序atexit(3)可能更合适。

扫码关注云+社区

领取腾讯云代金券