详谈UNIX环境进程异常退出

发表于:2012-6-14 10:10

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:解维东    来源:51Testing软件测试网采编

  简介:本文详细论述UNIX环境上的进程异常退出,将导致进程异常退出的各种情景归纳为两类,对每类情况详细分析了问题出现的根本原因,同时添加了相应的实例以易于您更好地进行了解。在此基础上,文章最后论述了应该如何避免和调试进程异常退出问题。希望读者阅读此文后,对进程异常退出问题有更深层的认识,有更系统的梳理,对调试此类进程崩溃问题时也能有所帮助,写出更稳定、更可靠的软件。

  进程异常退出

  进程退出意味着进程生命期的结束,系统资源被回收,进程从操作系统环境中销毁。进程异常退出是进程在运行过程中被意外终止,从而导致进程本来应该继续执行的任务无法完成。进程异常退出可能给软件用户造成如下负面影响:

  1、软件丧失部分或者全部功能性,无法完成既定任务。

  2、如果进程正在处理数据,可能造成数据损坏。

  3、如果是关键软件服务,必然导致服务异常中止,造成无法预计的损失。

  4、进程异常退出或者进程崩溃,也会给软件用户造成恐慌和困惑。

  进程异常退出是生产环境中经常遇到的问题,它会给软件用户造成很多负面影响,所以软件开发者应当避免这种问题的出现。但是导致进程异常退出的场景和原因是多种多样的,甚至令人琢磨不透。

  本文将所有可能造成进程异常退出的原因归结为两类。系统地将其分类,使读者对此类问题能有清晰的认识。对每类情况详细论述,分析根本原因,然后分析了这两类情况之间的联系,也就是信号与进程异常退出的紧密关系。希望您读完此文后,能对此类问题有更加全面、深入的理解,对调试此类问题也能有所帮助,写出更加可靠、更加稳定性、更加健壮的软件。

  首先我们来看导致进程异常退出的这两类情况:

  第一类:向进程发送信号导致进程异常退出;

  第二类:代码错误导致进程运行时异常退出。

  第一类:向进程发送信号导致进程异常退出

  信号:

  UNIX系统中的信号是系统响应某些状况而产生的事件,是进程间通信的一种方式。信号可以由一个进程发送给另外进程,也可以由核发送给进程。

  信号处理程序:

  信号处理程序是进程在接收到信号后,系统对信号的响应。根据具体信号的涵义,相应的默认信号处理程序会采取不同的信号处理方式:

  ● 终止进程运行,并且产生core dump文件。

  ● 终止进程运行。

  ● 忽略信号,进程继续执行。

  ● 暂停进程运行。

  ● 如果进程已被暂停,重新调度进程继续执行。

  前两种方式会导致进程异常退出,是本文讨论的范围。实际上,大多数默认信号处理程序都会终止进程的运行。

  在进程接收到信号后,如果进程已经绑定自定义的信号处理程序,进程会在用户态执行自定义的信号处理程序;反之,内核会执行默认信号程序终止进程运行,导致进程异常退出。

图1.默认信号处理程序终止进程运行

  所以,通过向进程发送信号可以触发默认信号处理程序,默认信号处理程序终止进程运行。在UNIX环境中我们有三种方式将信号发送给目标进程,导致进程异常退出。

71/71234567>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号