MST

星途 面试题库

面试题:C语言中Linux文件系统调用错误码的常见获取方式

在Linux环境下使用C语言进行文件系统调用时,例如`open`函数,如果调用失败,如何获取具体的错误码?请举例说明,并阐述常见错误码对应的错误场景。
19.2万 热度难度
编程语言C

知识考点

AI 面试

面试题答案

一键面试

在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:尝试对目录进行不允许的操作,例如以写方式打开一个目录。