errno
#include<errno.h>
extern int errno;
errno取值 | 含义 |
---|---|
EPERM | 操作不允许(permitted) |
ENOENT | 文件或目录不存在(no entries) |
EINTR | 系统调用被中断(interrupted) |
EIO | I/O错误 |
EBUSY | 设备或资源忙(busy) |
EEXIST | 文件存在(exist) |
EINVAL | 无效(invalid)参数 |
EMFILE | 打开的文件过多(too many files) |
ENODEV | 设备不存在(no device) |
EISDIR | 是一个目录(is a directory) |
ENOTDIR | 不是一个目录(not a directory) |
strerror()
将错误代码映射为一个字符串,并返回该字符串。
函数原型
#include<string.h>
char *strerror(int errnum);
perror()
print error
将当前错误映射为字符串,并输出到stderr.
字符串前面加上参数s给出的信息,并加上一个冒号和一个空格。
函数原型
#include<stdio.h>
void perror(const char *s);
示例
perror("program");
运行后在stderr给出类似如下的输出结果:
program: Too many open files
文件流错误
除了可以由errno指出文件流错误,也可以用下列函数检查文件流的状态,来确定是否发生错误或到达文件尾。
函数原型
#include <stdio.h>
int ferror(FILE *stream);
int feof(FILE *stream);
void clearerr(FILE *stream);
ferror()
检查文件流的错误标识,该标识被设置则返回非零值,否则返回0.
feof()
类似ferror(), 检查文件流的EOF标识。
clearerr()
清除文件流的错误标识和EOF标识。