概览
- 将
errno 对应的错误信息和自定义提示一起输出到 stderr
- 适用于文件、内存、网络等系统调用失败后的快速诊断
语法
#include <stdio.h>
#include <errno.h>
void perror(const char *s);
-
参数:
-
输出格式:
s: <errno 对应的错误描述>\n
行为特点
示例:打开不存在的文件
#include <cstdio> // fopen, fprintf, stderr
#include <errno.h> // errno
#include <string.h> // strerror —— C 风格头文件
int main() {
FILE *fp = fopen("no_file.txt", "r");
if (!fp) {
perror("打开文件失败");
// 输出示例:打开文件失败: No such file or directory
// fprintf等价写法:
fprintf(stderr,
"%s: %s\n",
"打开文件失败", // 自定义提示
strerror(errno) // 根据 errno 获取错误描述
);
}
return 0;
}
errno 常见值
常量 |
含义 |
ENOENT |
No such file or directory |
EACCES |
Permission denied |
ENOMEM |
Out of memory |
EEXIST |
File exists |
EBADF |
Bad file descriptor |
更多错误码请参考 man 3 errno
注意事项
- 仅在失败分支调用
perror ,避免误输出
- 成功时不要依赖或清零
errno
- 若需更灵活格式,可结合
fprintf(stderr, ...) 与 strerror(errno)
C++ 风格
#include <cstdio>
std::perror("操作失败"); // 与 C 方式等效
|