进程退出有三种情况:
1、代码运行完毕,结果正确
2、代码运行完毕,结果不正确
3、代码异常终止
下面介绍三种进程的退出方法。
echo $?
输出最近一次进程的退出码。对应三种退出情况,会有三种进程的退出码情况。
0表示success,非0表示failed,如果程序崩溃,那么退出码也变得没有意义了!!!
status比特位:
status是进程的终止状态,父进程可以用wait获取,但是进程只有低8位能被父进程使用。
如果_exit(-1),执行$?
会发现返回值是255.
exit在任何地方调用,都代表进程终止,参数是退出码。
exit在退出前,会:
1、执行用户定义的清理函数
2、关闭所有打开的流,所有的缓存数据均被写入!!!(exit和main函数的return会要求系统进行缓冲区刷新)
3、调用_exit
和 _exit
的对比:
关于数据缓冲和exit
和_exit
的对比:
输出:
_exit不会刷新缓冲区
return n等同于exit(n),调用main时,main会把返回值当作exit的参数。