使用sigaction函数,绑定信号处理器函数

#include <stdio.h>
#include <signal.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <stdint.h>
void exit_handler(int signo);
uint8_t InitSystem(){printf("initSystem");fflush(stdout);struct sigaction sa,osa;/** sa_handler:信号处理器函数的地址,亦或是常量SIG_IGN、SIG_DFL之一;* 仅当sa_handler是信号处理程序的地址时,才会对sa_mask和sa_flags字段加以处理。**/sa.sa_handler = exit_handler;/** sa_mask:定义一组信号,在调用由sa_handler所定义的处理器程序时将阻塞该组信号,不允许它们中断此* 处理器程序的执行;*/sigemptyset(&sa.sa_mask);/** 位掩码,指定用于虚拟号处理过程中的各种选项;*/sa.sa_flags = 0;int ret = sigaction(SIGINT,&sa,&osa);if(ret <0){printf("set signal ctrl+c failure!\n");}}int main(){InitSystem();int i = 0;while(true){i++;if(i>10000){i=0;}}}void exit_handler(int signo){/** static 在函数内部定义局部变量:* 对于函数内部定义的变量,当程序执行到它的定义处,编译器为它在栈上分配空间,函数在栈上分配的空间在此函数执行* 结束时会释放掉。如果想将该函数中的变量保存至下一次调用时,可以采用全局变量,但这种方式破坏了此变量的访问范围,* static关键字可以很好地解决这个问题。*/static int iTimes = 0;printf("**");int iMaxTimes = 3;if (signo == SIGINT){iTimes++;if (iTimes >= iMaxTimes){fprintf(stderr,"**** %dth Ctrl+C,quit ! \n",iTimes);fflush(stderr);exit(0);}else{fprintf(stderr," %dth Ctrl+c,the program will exit on %dth Ctrl+C\n",iTimes,iMaxTimes);}}}

捕捉ctrl+c信号,并进行操作(C++实现)相关推荐

  1. python 捕捉 ctrl+c 异常方法, os._exit() 和 sys.exit() 的用法和区别

    这里写自定义目录标题 python 捕捉 ctrl+c 异常方法 第一种方法 第二种方法使用 signal 模块 python 中 os._exit() 和 sys.exit() 的用法和区别 概述 ...

  2. python serial 发送ctl+c_[已解决]shell 脚本 给命令发送 Ctrl+C信号

    Signal     Value     Action   Comment ─────────────────────────────────── ────────────────────────── ...

  3. 输入法的一些设置,以及解决 输入法 ctrl+c 等快捷键不能操作问题?

    一:打开属性设置,把你常用的快捷键和系统默认的勾掉(程序员一般用ctrl shift z去撤销操作,所以勾掉),如果没有冲突按键忽略这一步. 二.解决ctrl c不工作问题 可能在你下载其他输入法,或 ...

  4. linux的ctrl c信号,linux ctrl+c信号

    使程序接收到ctrl+c就终止运行 int stop_loop;/*处理ctrl+c信号*/void sigint_handler(int sig_number){ static int been_h ...

  5. 32.全网最详细trap讲解,trap语法格式,信号和用途,最常用的信号,trap常用的命令,ctrl + c,信号屏蔽和恢复,trap -,debug,exit,return示例,三个综合案例

    文章目录 语法详解 trap格式 信号和用途 最常用的信号 trap常用的命令 示例 ctrl + c 示例 信号屏蔽和恢复 trap - 示例 debug示例 exit示例 return示例 综合案 ...

  6. linux的基础知识——捕捉SIGCHLD、信号传参,中断系统调用

    文章目录 1.SIGCHLD信号 2.信号传参 3.捕捉信号传参 4.中断系统调用 1.SIGCHLD信号 2.信号传参 3.捕捉信号传参 4.中断系统调用

  7. [Selenium]如何通过Selenium实现Ctrl+click,即按住Ctrl的同时进行单击操作

    在自动化测试的过程中,经常会出现这样的场景: 按住Ctrl的同时,进行单击操作,已达到多选的目的 Actions a = new Actions(driver); a.keyDown(Keys.CON ...

  8. vim 操作文件内容时,按下了 CTRL+S,导致其他操作无效

    在 Linux 使用 Ctrl +s 的组合按键后,发现似乎操作都无效了,不得动弹. 原因为 CTRL-S会阻塞所有的输入,解决方式为CTRL-Q. CTRL-S为Terminal的组合键,在Term ...

  9. 易语言添加ctrl c键,易语言操作快捷键汇总

    以下是关于易语言的快捷键内容: 预览被设计窗口 Ctrl+Enter 运行 F5 终止运行 Ctrl+F5 编译 F7 菜单编辑器 Ctrl+E 即时帮助 F1 在编辑窗口之间跳转.按下 Ctrl 键 ...

最新文章

  1. arm9 6410   tslib触屏小程序
  2. C#操作Sqlite快速入门及相关工具收集
  3. 北京君正集成电路的Newton平台--穿戴式
  4. HTML DOM Event对象
  5. Windows10 家庭版添加【本地组策略编辑器】
  6. tcp port numbers reused出现原因_python socket(tcp 线程)实现简单聊天室
  7. hadoop基石HDFS
  8. 小蚂蚁学习Redis笔记(13)——Redis之phpredis的安装
  9. 【Proteus】如何在Proteus中将网络标号批量标号
  10. php goto 代码还原_【表哥有话说 第58期】代码审计思路小结
  11. Asp.net防止盗链
  12. 启明星Exchange/outlook预定会议室终端显示解决方案
  13. 使用Future取消超时任务
  14. RxSwift核心逻辑
  15. EXCEL 子母饼图
  16. 消息队列-简单介绍Java消息队列,什么是消息队列,作用以及常见消息队列
  17. html使三角形渐变色,CSS3 简单的三角形渐变效果
  18. 华中科技大学计算机学院郑强教授简历,华中科大教授声讨后勤被处分 郑强个人简介介绍...
  19. ISA防火墙在中小企业中的综合应用(上)
  20. 哈希表之bkdrhash算法解析及扩展

热门文章

  1. 采用组策略Loopback功能限制文件夹重定向路径
  2. 2007年11月网络工程师考试试题答案
  3. 弱鸡儿长乐爆零旅Day4
  4. 开源方案搭建可离线的精美矢量切片地图服务-5.Mapbox离线项目实现
  5. 详解CSS position属性
  6. Swiper.js wap app 图片滑动效果
  7. 服务器安全检查指引——日常维护说明
  8. 字符串里面的单词反转
  9. 让谷歌、百度最快最多地收录您的网站
  10. Servlet如何上传文件? 戳这里