簡體   English   中英

Linux C 如何打開目錄並獲取文件描述符

[英]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_WRONLYO_RDWR )。

據我所知,無法自動創建和打開目錄。 O_CREAT標志總是創建一個常規文件。 O_DIRECTORY僅在打開現有名稱時才有意義,它檢查該名稱是否指目錄。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM