0%

perrpr函数

当linux系统函数出错时,通常会返回一个负值,并将整型变量errno设置为具有特定信息的值。头文件error.h中定义了errno以及它的各个常量值。

perror函数用于将最近的错误码(由全局变量 errno 表示)转换为对应的错误消息,并输出到标准错误流(stderr)。它的原型如下:

1
2
#include <stdio.h>
void perror(const char* s);

该函数首先输出由msg指向的字符串,然后是一个冒号,一个空格,接着是对应于errno值的出错消息,最后是换行符。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <unistd.h>

int main() {
int fd = open("nonexistent_file.txt", O_RDWR);
if (fd == -1) {
perror("open");
exit(EXIT_FAILURE);
} else {
printf("文件打开成功\n");
}

close(fd);
return 0;
}

open函数尝试打开名为”nonexistent_file.txt”的不存在文件,因此会导致一个错误。此时会输出:

1
open: No such file or directory

其中 “No such file or directory” 是由 errno 变量指定的错误消息。