MST

星途 面试题库

面试题:C语言中Linux文件描述符的打开与关闭

在Linux环境下使用C语言编程,描述一下文件描述符是如何打开和关闭的?请举例说明使用哪些系统调用函数,并且说明打开文件时常见的标志位及其作用。
31.0万 热度难度
编程语言C

知识考点

AI 面试

面试题答案

一键面试
  1. 文件描述符的打开
    • 在Linux环境下使用C语言打开文件通常使用open系统调用函数。其原型为:int open(const char *pathname, int flags); 或者 int open(const char *pathname, int flags, mode_t mode);
    • 例如,以只读方式打开一个文件:
#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>

int main() {
    int fd = open("test.txt", O_RDONLY);
    if (fd == -1) {
        perror("open");
        return 1;
    }
    // 这里可以进行文件操作
    close(fd);
    return 0;
}
  • 常见标志位及其作用
    • O_RDONLY:以只读方式打开文件。
    • O_WRONLY:以只写方式打开文件。
    • O_RDWR:以可读可写方式打开文件。
    • O_CREAT:如果文件不存在则创建它。使用此标志时,需要在open函数的第三个参数指定文件的访问权限。
    • O_TRUNC:如果文件存在且以写方式打开,则将其长度截断为0。
    • O_APPEND:每次写操作都追加到文件的末尾。
  1. 文件描述符的关闭
    • 使用close系统调用函数关闭文件描述符。其原型为:int close(int fd);
    • 例如上述代码中的close(fd);语句,它会关闭之前通过open函数打开的文件描述符fd,释放系统资源。如果关闭成功,close函数返回0;否则返回 -1 并设置errno以指示错误原因。