[英]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.