linux中ctrl c在脚本中如何写,Linux中的Ctrl + C中断事件处理

  • Post author:
  • Post category:linux


Grijesh Chau..

55

按下时Ctr + C,操作系统会向进程发送信号.有很多信号,其中一个是SIGINT.SIGINT(“程序中断”)是终止信号之一.

还有更多种类的终止信号,但有关SIGINT的有趣之处在于它可以由您的程序处理(捕获).SIGINT的默认操作是程序终止.也就是说,如果您的程序没有专门处理此信号,则当您按下Ctr + C程序时终止作为默认操作.

要更改信号的默认操作,您必须注册要捕获的信号.要在C程序中注册信号(至少在POSIX系统下),有两个功能

这些函数要求标头signal.h包含在您的C代码中.我在下面提供了一个简单的signal函数示例和注释.

#include

#include

#include // 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;

}

您可以使用gcc编译此代码并从shell执行它.代码中存在无限循环,它将一直运行,直到您SIGINT按下发送信号Ctr + C.

你可以留意评论,我只是试着给你一个快速的起点.我相信通过更多努力,您将详细探索这些事情. (2认同)

感谢您的回复和回答,这非常有效. (2认同)