捕捉ctrl+c信号,并进行操作(C++实现)
使用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++实现)相关推荐
- python 捕捉 ctrl+c 异常方法, os._exit() 和 sys.exit() 的用法和区别
这里写自定义目录标题 python 捕捉 ctrl+c 异常方法 第一种方法 第二种方法使用 signal 模块 python 中 os._exit() 和 sys.exit() 的用法和区别 概述 ...
- python serial 发送ctl+c_[已解决]shell 脚本 给命令发送 Ctrl+C信号
Signal Value Action Comment ─────────────────────────────────── ────────────────────────── ...
- 输入法的一些设置,以及解决 输入法 ctrl+c 等快捷键不能操作问题?
一:打开属性设置,把你常用的快捷键和系统默认的勾掉(程序员一般用ctrl shift z去撤销操作,所以勾掉),如果没有冲突按键忽略这一步. 二.解决ctrl c不工作问题 可能在你下载其他输入法,或 ...
- linux的ctrl c信号,linux ctrl+c信号
使程序接收到ctrl+c就终止运行 int stop_loop;/*处理ctrl+c信号*/void sigint_handler(int sig_number){ static int been_h ...
- 32.全网最详细trap讲解,trap语法格式,信号和用途,最常用的信号,trap常用的命令,ctrl + c,信号屏蔽和恢复,trap -,debug,exit,return示例,三个综合案例
文章目录 语法详解 trap格式 信号和用途 最常用的信号 trap常用的命令 示例 ctrl + c 示例 信号屏蔽和恢复 trap - 示例 debug示例 exit示例 return示例 综合案 ...
- linux的基础知识——捕捉SIGCHLD、信号传参,中断系统调用
文章目录 1.SIGCHLD信号 2.信号传参 3.捕捉信号传参 4.中断系统调用 1.SIGCHLD信号 2.信号传参 3.捕捉信号传参 4.中断系统调用
- [Selenium]如何通过Selenium实现Ctrl+click,即按住Ctrl的同时进行单击操作
在自动化测试的过程中,经常会出现这样的场景: 按住Ctrl的同时,进行单击操作,已达到多选的目的 Actions a = new Actions(driver); a.keyDown(Keys.CON ...
- vim 操作文件内容时,按下了 CTRL+S,导致其他操作无效
在 Linux 使用 Ctrl +s 的组合按键后,发现似乎操作都无效了,不得动弹. 原因为 CTRL-S会阻塞所有的输入,解决方式为CTRL-Q. CTRL-S为Terminal的组合键,在Term ...
- 易语言添加ctrl c键,易语言操作快捷键汇总
以下是关于易语言的快捷键内容: 预览被设计窗口 Ctrl+Enter 运行 F5 终止运行 Ctrl+F5 编译 F7 菜单编辑器 Ctrl+E 即时帮助 F1 在编辑窗口之间跳转.按下 Ctrl 键 ...
最新文章
- arm9 6410 tslib触屏小程序
- C#操作Sqlite快速入门及相关工具收集
- 北京君正集成电路的Newton平台--穿戴式
- HTML DOM Event对象
- Windows10 家庭版添加【本地组策略编辑器】
- tcp port numbers reused出现原因_python socket(tcp 线程)实现简单聊天室
- hadoop基石HDFS
- 小蚂蚁学习Redis笔记(13)——Redis之phpredis的安装
- 【Proteus】如何在Proteus中将网络标号批量标号
- php goto 代码还原_【表哥有话说 第58期】代码审计思路小结
- Asp.net防止盗链
- 启明星Exchange/outlook预定会议室终端显示解决方案
- 使用Future取消超时任务
- RxSwift核心逻辑
- EXCEL 子母饼图
- 消息队列-简单介绍Java消息队列,什么是消息队列,作用以及常见消息队列
- html使三角形渐变色,CSS3 简单的三角形渐变效果
- 华中科技大学计算机学院郑强教授简历,华中科大教授声讨后勤被处分 郑强个人简介介绍...
- ISA防火墙在中小企业中的综合应用(上)
- 哈希表之bkdrhash算法解析及扩展