Linux C 如何打开目录并获取文件描述符

2024-04-26

#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <fcntl.h>

int main()
{
    int fd;
    if ((fd = open("/home/zhangke", O_DIRECTORY | O_RDWR)) ==-1)
    {
        printf("error %s\n", strerror(errno));
       return -1;
    }
    return 0;
}

/home/zhangke is一个目录和它存在。我收到错误Is a directory,那么,我该如何使用open()得到一个fd目录正确吗?


Use O_RDONLY代替O_RDWR作为访问模式。来自open(2)错误列表:

EISDIR路径名指的是一个目录,请求的访问涉及写入(即O_WRONLY or O_RDWR已设置)。

据我所知,没有办法自动创建和打开目录。这O_CREATflag 始终创建一个常规文件。O_DIRECTORY仅在打开现有名称时才有意义,它会检查该名称是否引用目录。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux C 如何打开目录并获取文件描述符 的相关文章

随机推荐