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

时间:2017-02-10 07:56:00

标签: c linux

#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 a directory,那么,我如何使用open()正确获取目录的fd

1 个答案:

答案 0 :(得分:10)

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

  

EISDIR pathname是指一个目录,请求的访问涉及写入(即设置O_WRONLYO_RDWR)。