日期:2014-05-16  浏览次数:20820 次

请教一个dirent结构体的问题
请问一下枚举类型0,1,2,4代表什么类型的文件 ? # define DT_UNKNOWN DT_UNKNOWN 后面的变量完全一样,这样定义有什么用途??



01 enum 

02 {  

03 DT_UNKNOWN = 0,  

04 # define DT_UNKNOWN DT_UNKNOWN  

05 DT_FIFO = 1,  

06 # define DT_FIFO DT_FIFO  

07 DT_CHR = 2,  

08 # define DT_CHR DT_CHR  

09 DT_DIR = 4,  

10 # define DT_DIR DT_DIR  

11 DT_BLK = 6,  

12 # define DT_BLK DT_BLK  

13 DT_REG = 8,  

14 # define DT_REG DT_REG  

15 DT_LNK = 10,  

16 # define DT_LNK DT_LNK  

17 DT_SOCK = 12,  

18 # define DT_SOCK DT_SOCK  

19 DT_WHT = 14  

20 # define DT_WHT DT_WHT  

21 }; 


------解决方案--------------------
FIFO 代表管道 

CHR 代表字符设备

UNKOWN 就是未知的意思啊
------解决方案--------------------
0 未知文件~
1 管道
2 字符设备 ~ 就是流..
4 就是目录文件..

# define DT_UNKNOWN DT_UNKNOWN 
前面是个宏名.. 后面是值把..
------解决方案--------------------
经调查,那些宏都是d_type字段,这个字段是属于dirent结构体,在<bits/dirent.h>中有定义。这个结构体也包括了目录名称(文件名称)等等。
我们可以利用这些宏来判断是哪种类型的目录(文件)。至于为什么8表示普通文件,4表示目录,不太清楚。
或许可以用“系统默认”、“系统设置”等来解释。就像标准输入、标准输出文件描述号为0、1之类的。

等待高手给权威解释。
------解决方案--------------------
11 DT_BLK = 6, 块特别设备
13 DT_REG = 8, 普通文件
15 DT_LNK = 10, 符号链接
17 DT_SOCK = 12, socket套接字
19 DT_WHT = 14 whiteout --不知道什么意思