在编写unix程序的时候,常常会出现一些错误,而最毁灭性的就是进程直接down掉
进程意外退出会给用户带来很多负面影响
同时如果调试和日志文件不够完善的话,查起错来相当麻烦,再加上用户环境和我们的开发环境不一样,当你回过头来改这个错误,如果日志不够完善,甚至需要在用户的环境下复现错误,这基本上是不可能的,尤其是你的代码要跑一段时间才能复现错误
我刚进公司的时候写了一些简单的应用程序,为快速实现功能同时由于缺少liunx环境下用户程序开发的经验,没有做好调试的工作,在开发环境下调试甚至是通过打印信息到终端来完成的,虽然最后在公司测试没什么问题,但是放到用户那里就会出错,而且还找不到原因,最后也搞不明白是自己程序的错误还是其他原因导致的
在吃了几次自己的亏以后,为每次都乖乖的把日志完善
下面总结以下进程会意外退出的几种情况
一.进程的退出
APUE 第7章第一页列出了8种进程退出的方式
其中5种是由我们的代码控制,通过调用退出的函数正常退出,这是我们程序中显示的退出,是容易查找也是容易控制的
另外3种退出是 异常退出,也是我们不愿看到,隐式的退出,分别是
1.调用abort
2.接收到一个信号并终止
3.最后一个线程对取消线程作出相应
对于abort,我们理解为人为制造异常让程序退出,其实就是制造SIGABRT信号给进程,进程不理会对这个信号的捕获忽略,捕获这个信号纯粹只是为了做一些清理工作,在信号处理函数中不做退出的话,信号处理函数返回时,进程会自己退出
<
进程意外退出会给用户带来很多负面影响
同时如果调试和日志文件不够完善的话,查起错来相当麻烦,再加上用户环境和我们的开发环境不一样,当你回过头来改这个错误,如果日志不够完善,甚至需要在用户的环境下复现错误,这基本上是不可能的,尤其是你的代码要跑一段时间才能复现错误
我刚进公司的时候写了一些简单的应用程序,为快速实现功能同时由于缺少liunx环境下用户程序开发的经验,没有做好调试的工作,在开发环境下调试甚至是通过打印信息到终端来完成的,虽然最后在公司测试没什么问题,但是放到用户那里就会出错,而且还找不到原因,最后也搞不明白是自己程序的错误还是其他原因导致的
在吃了几次自己的亏以后,为每次都乖乖的把日志完善
下面总结以下进程会意外退出的几种情况
一.进程的退出
APUE 第7章第一页列出了8种进程退出的方式
其中5种是由我们的代码控制,通过调用退出的函数正常退出,这是我们程序中显示的退出,是容易查找也是容易控制的
另外3种退出是 异常退出,也是我们不愿看到,隐式的退出,分别是
1.调用abort
2.接收到一个信号并终止
3.最后一个线程对取消线程作出相应
对于abort,我们理解为人为制造异常让程序退出,其实就是制造SIGABRT信号给进程,进程不理会对这个信号的捕获忽略,捕获这个信号纯粹只是为了做一些清理工作,在信号处理函数中不做退出的话,信号处理函数返回时,进程会自己退出
<