unix环境下进程意外退出终止

本文讨论了Unix系统中进程意外退出的问题,包括进程的8种退出方式,特别是异常退出的三种情况:调用abort、接收到信号终止、线程取消响应。重点分析了导致进程异常退出的信号来源和处理方法,以及编程错误如除法错误、段错误等。建议通过捕获和忽略特定信号、避免非法操作、进行退出前清理工作来防止意外退出。最后强调了日志记录和GDB调试在定位问题中的重要性。
摘要由CSDN通过智能技术生成
在编写unix程序的时候,常常会出现一些错误,而最毁灭性的就是进程直接down掉

进程意外退出会给用户带来很多负面影响
同时如果调试和日志文件不够完善的话,查起错来相当麻烦,再加上用户环境和我们的开发环境不一样,当你回过头来改这个错误,如果日志不够完善,甚至需要在用户的环境下复现错误,这基本上是不可能的,尤其是你的代码要跑一段时间才能复现错误

我刚进公司的时候写了一些简单的应用程序,为快速实现功能同时由于缺少liunx环境下用户程序开发的经验,没有做好调试的工作,在开发环境下调试甚至是通过打印信息到终端来完成的,虽然最后在公司测试没什么问题,但是放到用户那里就会出错,而且还找不到原因,最后也搞不明白是自己程序的错误还是其他原因导致的

在吃了几次自己的亏以后,为每次都乖乖的把日志完善
下面总结以下进程会意外退出的几种情况

一.进程的退出
    APUE 第7章第一页列出了8种进程退出的方式
    其中5种是由我们的代码控制,通过调用退出的函数正常退出,这是我们程序中显示的退出,是容易查找也是容易控制的
    另外3种退出是 异常退出,也是我们不愿看到,隐式的退出,分别是
    1.调用abort
    2.接收到一个信号并终止
    3.最后一个线程对取消线程作出相应
    对于abort,我们理解为人为制造异常让程序退出,其实就是制造SIGABRT信号给进程,进程不理会对这个信号的捕获忽略,捕获这个信号纯粹只是为了做一些清理工作,在信号处理函数中不做退出的话,信号处理函数返回时,进程会自己退出
<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值