[英]Linux C how to open a directory and get a file descriptor
#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
?
使用O_RDONLY
而不是O_RDWR
作为访问模式。 来自open(2)
错误列表:
EISDIR
路径名指的是一个目录,请求的访问涉及写入(即设置了O_WRONLY
或O_RDWR
)。
据我所知,无法自动创建和打开目录。 O_CREAT
标志总是创建一个常规文件。 O_DIRECTORY
仅在打开现有名称时才有意义,它检查该名称是否指目录。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.