#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_CREAT
flag 始终创建一个常规文件。O_DIRECTORY
仅在打开现有名称时才有意义,它会检查该名称是否引用目录。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)