本文主要是介绍Linux详解:进程终止、错误码,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- 进程终止
- main函数返回值
- 函数错误码
- 进程退出场景
- 进程常见退出方式
进程终止
main函数返回值
main函数的返回值,叫做进程的退出码。该退出码表示整个进程的执行结果。
- 0:表示成功
- 非0:表示失败
成功不需要理由,失败需要原因。
非0,不同的数字,表示不同的失败原因。
echo $?
查看最近一次,进程退出,返回的退出码。
退出码
每个退出码都可以转化成为相对应的退出错误描述。
- 使用语言和系统自带的方法,进行转化
- 自定义
查看系统中提供的错误(退出)码描述
strerror()
:获取指向错误信息字符串的指针
#include<stdio.h>
#include<string.h>int main()
{for(int i = 0;i<200;i++){printf("%d: %s\n",i,strerror(i));}return 0;
}
自定义退出码描述错误
可以自定义退出码的代表含义。
enum{success=0;open_err,malloc_err
};const char* error(int code)
{switch(code){case success:return "success";case open_err:return "file open error";case malloc_err:return "malloc error";default:return "unkonw error";}
}
其他函数仅仅表示函数调用完毕。
函数错误码
函数再执行出错的时候也存在一个退出码,通常称之为错误码。
#include<errno.h>
errno()
:获取错误编号
int main()
{File* fp = fopen("./log.txt","r");printf("%d:%s\n",errno,strerror(errno));return 0;
}
进程退出场景
-
进程代码运行完毕,结果正确
-
进程代码运行完毕,结果不正确
-
进程代码没有执行完,进程异常终止
- 进程出现了异常,就是进程收到了异常信号,每个信号都有不同的编号,不同的信号编号表明不同的异常原因。
-
任何进程最终的执行情况,都可以使用两个数字表明具体执行的情况
信号编号 进程退出码
信号编号 | 进程退出码 | 表示状态 |
---|---|---|
0 | 0 | 没有异常,结果正确 |
!0 | 0 | 出现异常,退出码无意义 |
0 | !0 | 没有异常,结果错误 |
!0 | !0 | 出现异常,退出码无意义 |
进程常见退出方式
echo $?
查看最近一次,进程退出,返回的退出码。
正常终止
可以通过echo $?
查看进程退出码
- 从main返回
- 调用
exit()
_exit
exit()
:正常的进程终止
#include<stdlib.h>
void exit(int status);
exit可以用来终止进程,exit的参数就是退出码。在进程代码中,任意位置调用exit,都表示进程退出
**_exit()
:进程终止
#include<unistd.h>
void _exit(int status);
系统调用,作用和exit相同
exit和_exit的区别:
exit
:会刷新缓冲区_exit
:不支持刷新缓冲区
异常退出
ctrl+c
,信号终止
这篇关于Linux详解:进程终止、错误码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!