1.errno
POSIX和ISO C将errno定义为一个符号,它扩展称为一个可修改的整型左值(lvalue)。它可以使一个包含出错编号的证书,也可以是一个返回出错编号指针的函数。
在支持线程的环境中,多个线程共享进程地址空间,为避免一个线程干扰另一个线程,例如Linux支持多线程存取errno,将其定义为:
extern int *__errno_location(void);
#define errno (*__errno_location)
2.c标准定义了两个函数,用于打印出错信息。
#include <string.h>
char *strerror(int errnum);
strerror函数将errnum映射为一个出错消息字符串,并且返回此字符串的指针.
#include <stdio.h>
void perror(const char *msg);
它首先输出由msg指向的字符串,然后是一个冒号,一个空格,接着是对应于errno值的出错信息,最后是一个换行符。
3.实例
#include "apue.h"
#include <errno.h>
int
main(int argc,char *argv[]){
fprintf(stderr,"EACCES:%s\n",strerror(EACCES));
errno=ENOENT;
perror(argv[0]);
exit(0);
}
4.出错恢复
errno.h中定义的各种出错可以分成两类:致命性的和非致命性的。
来源:oschina
链接:https://my.oschina.net/u/2491285/blog/536950