未完待续
返回错误处理与 errno
作用:,在 Linux 系统下对常见的错误做了一个编号,每一个编号都代表着每一种不同的错误类型,当函数执行发生错误的时候,操作系统会将这个错误所对应的编号赋值给 errno 变量,每一个进程(程序)都维护了自己的 errno 变量,它是程序中的全局变量,该变量用于存储就近发生的函数执行错误编号,也就意味着下一次的错误码会覆盖上一次的错误码。所以由此可知道,当程序中调用函数发生错误的时候,操作系统内部会通过设置程序的 errno 变量来告知调用者究竟发生了什么错误!
用法:需要先包含头文件#include <errno.h>,然后直接用即可printf(“%d\n”, errno);
strerror 函数
作用:这里介绍一个 C 库函数strerror(),该函数可以将对应的 errno 转换成适合我们查看的字符串信息,其函数原型如下所示(可通过"man 3 strerror"命令查看,注意此函数是 C 库函数,并不是系统调用)
用法:printf(“Error: %s\n”, strerror(errno));
perror 函数
作用:除了 strerror 函数之外,我们还可以使用 perror 函数来查看错误信息,一般用的最多的还是这个函数,调用此函数不需要传入 errno,函数内部会自己去获取 errno 变量的值,调用此函数会直接将错误提示字符串打印出来,而不是返回字符串,除此之外还可以在输出的错误提示字符串之前加入自己的打印信息,
用法:需要包含<stdio.h>头文件,perror(“open error”);在错误提示字符串信息之前,可加入自己的打印信息,也可不加,不加则传入空字符串即可。
_exit()和_Exit()函数
作用:main 函数中使用 return 后返回,return 执行后把控制权交给调用函数,结束该进程。调用_exit()函数会清除其使用的内存空间,并销毁其在内核中的各种数据结构,关闭进程的所有文件描述符,并结束进程、将控制权交给操作系统。
用法:
_exit()函数原型如下所示:
#include <unistd.h>
void _exit(int status);
调用函数需要传入 status 状态标志,0 表示正常结束、若为其它值则表示程序执行过程中检测到有错误
发生。
_exit()和_Exit()两者等价,用法作用是一样的
exit()函数
作用:exit()函数_exit()函数都是用来终止进程的,exit()是一个标准 C 库函数,而_exit()和_Exit()是系统调用。执行 exit()会执行一些清理工作,最后调用_exit()函数。
用法:
函数原型
#include <stdlib.h>
void exit(int status);
该函数的用法和_exit()/_Exit()是一样的