#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
?
答案 0 :(得分:10)
使用O_RDONLY
代替O_RDWR
作为访问模式。来自open(2)
错误列表:
EISDIR
pathname是指一个目录,请求的访问涉及写入(即设置O_WRONLY
或O_RDWR
)。