忽略所有信号导致的程序Ctrl+c和Ctrl+z无法退出问题,以及信号表详解
首先,出现的问题:Ctrl+c和Ctrl+z甚至正常的杀程序,都无法让执行的程序退出
出现问题的原因
在程序中 调用CloseIOAndSignal函数时,将所有的信号全部执行忽略和关闭操作,因此,当按Ctrl+c和Ctrl+z时,程序无法正常关闭
至于到底什么原因 ,为什么教程里让关闭所有信号就没错,我关闭所有信号就有错,这个我没有搞清楚,还有信号机制仍然一知半解,这个慢慢再学习
解决办法:
用命令:kill -9 进程号
下面是所查资料
关于kill -9 和 普通kill 的详解
kill -9 和 kill 有什么区别
转自kill -9 和 kill 有什么区别
区别:
kill -9 id:
一般不加参数kill是使用15来杀,
这相当于正常停止进程,
停止进程的时候会释放进程所占用的资源;他们的区别就好比电脑关机中的软关机
(通过“开始”菜单选择“关机”)与硬关机
(直接切断电源),虽然都能关机,
但是程序所作的处理是不一样的。kill - 9 表示强制杀死该进程;而 kill 则有局限性,例如后台进程,守护进程等;
执行kill命令,
系统会发送一个SIGTERM信号给对应的程序。
SIGTERM多半是会被阻塞的。
kill -9命令,系统给对应程序发送的信号是SIGKILL,
即exit。exit信号不会被系统阻塞,
所以kill -9能顺利杀掉进程。
最后,转载别人博客上的信号表详解
转载自:
Linux常用信号列表
SIGNAL
几点比较重要的,我列举以下:
- 可以使用signal函数(移植性不好,功能简单)或者sigaction函数来改变信号抵达的处理动作。
- 信号的处理动作是进程属性,所以一个进程里的多个线程,信号的处理动作是相同的。
- 一些系统调用可以发送信号,例如:kill函数、pthread_kill函数、raise函数等等。
Linux下查看支持的信号列表
在这里插入图片描述
- 列表中,编号为1 ~ 31的信号为传统UNIX支持的信号,是不可靠信号(非实时的)
- 编号为32 ~ 63的信号是后来扩充的,称做可靠信号(实时信号)。
- 不可靠信号和可靠信号的区别在于前者不支持排队,可能会造成信号丢失,而后者不会。
信号简要说明
在这里插入图片描述在这里插入图片描述
信号详细说明
SIGHUP (1) 本信号在用户终端连接(正常或非正常)结束时发出,通常是在终端的控制进程结束时,通知同一session内的各个作业,这时它们与控制终端不再关联。
SIGINT (2) 程序终止(interrupt)信号,在用户键入INTR字符(通常是Ctrl + C)时发出。
SIGQUIT (3) 和SIGINT类似,但由QUIT字符(通常是Ctrl + )来控制。进程在因收到 SIGQUIT退出时会产生core文件,在这个意义上类似于一个程序错误信号。
SIGILL (4) 执行了非法指令。通常是因为可执行文件本身出现错误,或者试图执行数据段的堆栈溢出时也有可能产生这个信号。
SIGTRAP (5) 由断点指令或其它trap指令产生,由debugger使用。
SIGABRT (6) 程序自己发现错误并调用abort时产生。
SIGIOT (6) 在PDP-11上由iot指令产生,在其它机器上和SIGABRT一样。
SIGBUS (7) 非法地址,包括内存地址对齐(alignment)出错。举例:访问一个四个字长的整数,但其地址不是4的倍数。
SIGFPE (8) 在发生致命的算术运算错误时发出。不仅包括浮点运算错误,还包括溢出及除数为0等其它所有的算术的错误。
SIGKILL (9) 用来立即结束程序的运行。本信号不能被阻塞、处理和忽略。
SIGUSR1 (10) 留给用户使用。
SIGSEGV (11) 段错误,试图访问未分配给自己的内存,或试图往没有写权限的内存地址写数据。
SIGUSR2 (12) 留给用户使用。
SIGPIPE (13) Broken pipe。
SIGALRM (14) 时钟定时信号,计算的是实际的时间或时钟时间。alarm函数使用该信号。
SIGTERM (15) 程序结束(terminate)信号。与SIGKILL不同的是该信号可以被阻塞和处理。通常用来要求程序自己正常(优雅地)退出。shell命令kill缺省产生这个信号。
SIGCHLD (17) 子进程结束时,父进程会收到这个信号。
SIGCONT (18) 让一个停止(stopped)的进程继续执行。本信号不能被阻塞。可以用一个handler来让程序在由stopped状态变为继续执行时完成特定的工作。例如:重新显示提示符。
SIGSTOP (19) 停止(stopped)进程的执行。注意它和terminate以及interrupt的区别:该进程还未结束,只是暂停执行。本信号不能被阻塞、处理或忽略。
SIGTSTP (20) 停止进程的运行,但该信号可以被处理和忽略。用户键入SUSP字符时 (通常是Ctrl + Z)发出这个信号。
SIGTTIN (21) 当后台作业要从用户终端读数据时,该作业中的所有进程会收到SIGTTIN 信号。缺省时这些进程会停止执行。
22.SIGTTOU (22) 类似于SIGTTIN,但在写终端(或修改终端模式)时收到。
SIGURG (23) 有“紧急“数据或out-of-band数据到达socket时产生。
SIGXCPU (24) 超过CPU时间资源限制。这个限制可以由getrlimit/setrlimit来读取或者改变。
SIGXFSZ (25) 超过文件大小资源限制。
SIGVTALRM (26) 虚拟时钟信号。类似于SIGALRM,但是计算的是该进程占用的CPU时间。
SIGPROF (27) 类似于SIGALRM/SIGVTALRM,但包括该进程用的CPU时间以及系统调用的时间。
SIGWINCH (28) 窗口大小改变时发出。
SIGIO (29) 文件描述符准备就绪,可以开始进行输入/输出操作。
SIGPWR (30) Power failure。
忽略所有信号导致的程序Ctrl+c和Ctrl+z无法退出问题,以及信号表详解相关推荐
- 微信小程序学习:(二)app.js及index.js详解
微信小程序学习:(二)app.js及index.js详解 项目地址:https://github.com/leoricding/- 在用ide创建小程序项目时,系统默认为我们创建了一个hellowor ...
- mount: 未知的文件系统类型“vboxsf”_好程序员云计算学习路线教程大纲课件:Mount 挂载详解...
好程序员云计算学习路线教程大纲课件:Mount 挂载详解: ====================================================================== ...
- menu.ctrl.php,对pyqt5之menu和action的使用详解
对pyqt5之menu和action的使用详解 如下所示: exitAct = QAction(QIcon('exit.png'), '&Exit', self) exitAct.setSho ...
- 【微信技术-微信小程序】------- 骨架屏(加载流)配置(skeleton-config)及属性详解 (第三篇)
本篇文章是骨架屏(skeleton)配置及属性详解(第三篇) 第一篇文章:[微信技术-微信小程序]-------骨架屏(加载流) 简单入门(第一篇) 第二篇文章:[微信技术-微信小程序]------- ...
- linux直接运行程序加载动态库失败,扣丁学堂Linux培训详解程序运行时加载动态库失败解决方法...
今天扣丁学堂Linux培训老师给大家介绍一下关于Linux程序运行时加载动态库失败的解决方法,希望对同学们学习有所帮助,下面我们一起来看一下吧. Linux下不能加载动态库问题 当出现下边异常情况 . ...
- 烟雾检测电路c语言程序,烟雾报警器电路图大全(六款模拟电路设计原理图详解)...
描述 烟雾报警器电路图(一) 本报警器采用半导体气敏元件作为传感器,实现"气-电"转换,555时基电路组成触发电路和报警音响电路:由于气敏元件工作时要求其加热电压相当稳定,所以利用 ...
- java开发微信如何维护登录状态_微信小程序中做用户登录与登录态维护的实现详解...
总结 大家都知道,在开发中提供用户登录以及维护用户的登录状态,是一个拥有用户系统的软件应用普遍需要做的事情.像微信这样的一个社交平台,如果做一个小程序应用,我们可能很少会去做一个完全脱离和舍弃连接用户 ...
- 运维程序员入门指南:运维职责和分类划分详解
很多人傻傻分不清楚运维具体是干什么的?有哪些分类?这很正常,孔子曰:术业有专攻,如是而已.还有一些新人小白想要进入这个行业,但是很懵懂,在刚刚接触,心里就打退堂鼓了,害怕自己学不会搞不定弄不懂.千锋广 ...
- 程序员体验AI换脸就不要用ZAO了,详解Github周冠军项目Faceswap的变脸攻略
上个月笔者曾在<银行家杂志>发文传统银行如何引领开放银行时代潮流,就曾指出AI换脸等技术的兴起将会我们未来的身份认证手段造成一定的麻烦.而最近ZAO换脸软件再次爆红社交媒体,而且其接近于霸 ...
最新文章
- static 变量初始化顺序的问题和解决方案
- 【Manacher】最长双回文串(luogu 4555)
- 将DataFrame格式的数据存入到mysql数据库中
- IE6,IE7 Firefox 兼容问题
- 计算机里什么文件无法删除,电脑上的文件删不掉怎么办
- 小贷公司的风险成因及应对策略——策略篇
- Zerodium 称 iOS exploit 过剩,将暂停收购且买价或下跌
- SpringMvc Eclipse搭建web项目
- crx文件里面的html文件,javascript – Chrome扩展程序:在crx文件中打开html,标签上没有图标...
- iOS 开发,该如何解决弹窗的设计问题?
- 细数AVPlayer的那些坑
- RHEL5中配置vsftpd搭建FTP服务器
- 亿级爆款背后,网易云音乐的生长之道
- One by One [ 1 x 1 ] Convolution - counter-intuitively useful
- fckeditor for php 下载,PHP_FCKeditor的安装(PHP),1.下载新最版的FCKEditor,解压 2. - phpStudy...
- linux mantis安装 yum,CentOS 安装和配置 Mantis
- yarn中资源调度fair schedule详解
- 2019年成功与失败的危机公关案例分析
- 七牛服务器提供的压缩图片的方法
- 期货交易在使用基本面分析操作过程中要注意哪些问题?怎么控制风险?
热门文章
- SCI录用的最后一步——答复审稿人的策略和答复信的写作技巧
- BZOJ-1927-星际竞速-SDOI2010
- CVPR 2020 《Transform and Tell: Entity-Aware News Image Captioning》论文笔记(数据集)
- 集合(normal)
- java中实现接口采用的关键字是_一个Java类实现一个接口使用的是implements关键字。...
- dev gridcontrol简单的动态设置动态表头
- Java多线程:线程间通信之Lock
- [JZOJ P1311] [DP]邮局设置问题
- 通往奥格瑞玛的道路(洛谷 1462)
- nginx中的try_files指令解释