linux 中断程序 c,Linux中Ctrl + C中断事件处理

小编典典

按时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。

2020-06-02

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值