栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Linux中Ctrl + C中断事件处理

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Linux中Ctrl + C中断事件处理

按时

Ctr +C
,操作系统将向该进程发送信号。有许多信号,其中之一是SIGINT。SIGINT(“程序中断”)是终止信号之一。

终止信号还有几种,但是关于SIGINT的有趣的事情是它可以由程序处理(捕获)。SIGINT的默认操作是程序终止。也就是说,如果您的程序没有专门处理此信号,则当您按下

Ctr+ C
程序时,它将作为默认操作终止。

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

  1. signal(int signum,sighandler_t handler);
  2. sigaction(int signum,const struct sigaction * act,struct sigaction * oldact); 。

这些功能要求标头signal.h包含在C代码中。我在下面提供了

signal
带有注释功能的简单示例。

#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;}

注意:您只能在信号处理程序中调用安全/授权函数。

您可以使用gcc编译此代码,然后从shell中执行它。代码中有一个无限循环,它将一直运行,直到您

SIGINT
按发出信号为止
Ctr + C



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/379822.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号