我在閱讀「The C Progamming Language」並練習代碼以打印文件夾內的文件名。下面是代碼作者的片斷爲UNIX系統:Window中文件夾的結構?
#ifndef DIRSIZ
#define DIRSIZ 14
#endif
struct direct /* directory entry */
{
ino_t d_ino; /* inode number */
char d_name[DIRSIZ];
} direct
...
struct direct dirbuf;
while(read(afiledescriptor, (char*) &dirbuf, sizeof(dirbuf))
== sizeof(dirbuf)){/* do sth with dirbuf */}
問題是我不知道如何在Windows目錄文件描述符構造,因此無法指定第三個參數(讀取字節parameter,DIRSIZE
)在_read
中。任何人都可以幫忙謝謝。
以及這是如何相關的? –
這本書說UNIX中的一個文件夾是一個頭文件結構的文件,它具有上面的'直接'類型,包含1個inode編號和一個文件名。每個文件的每個標題。所以代碼通過標題讀取文件夾,標題,並打印出文件的名稱。但是我需要知道一個頭文件的大小,在這個例子中,UNIX系統的版本是14,就像本書寫的那樣。我不知道Window中頭部的大小。 –
@最佳名稱:Windows不是Unix。說實話,你在那裏的書中的描述並不完全正確。有不同種類的Unix(AT&T System-V,BSD,Solaris,MacOS X(是的,其核心的Apple OS是Unix)),它們都使用略有不同的目錄結構。這就是爲什麼你永遠不應該使用你在那裏的方法列出文件。由於這種多樣性,在所有* nix OS-es和Linux支持的POSIX標準中都指定了API:http://man7.org/linux/man-pages/man3/readdir.3.html - 注意你**不要**自己定義dirent! – datenwolf