我在阅读“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