面试题答案
一键面试在Linux环境下,当open
函数调用失败时,可以通过errno
变量获取具体的错误码。errno
定义在<errno.h>
头文件中。以下是一个示例:
#include <stdio.h>
#include <fcntl.h>
#include <errno.h>
#include <string.h>
int main() {
int fd = open("nonexistent_file.txt", O_RDONLY);
if (fd == -1) {
printf("open failed, error code: %d, error message: %s\n", errno, strerror(errno));
}
return 0;
}
常见错误码及其对应的错误场景:
- EACCES:权限不足。例如,尝试以只读方式打开一个没有读权限的文件,或者尝试以写方式打开一个只有读权限的文件。
- ENOENT:文件或目录不存在。如示例中尝试打开一个不存在的文件。
- EMFILE:进程已达到打开文件数的上限。进程打开了过多文件,无法再打开新文件。
- ENFILE:系统已达到打开文件数的上限。整个系统范围内打开的文件数过多,无法再打开新文件。
- EISDIR:尝试对目录进行不允许的操作,例如以写方式打开一个目录。