我目前正在实现自己的“ls”命令。我一直依赖该结构,但我发现一篇旧帖子指出d_type
不应使用该结构的某些成员,例如。
我已经能够列出存储库中的文件,但我想根据文件类型对文件进行排序,这就是我发帖的原因。
所以我只是想知道除了使用它之外是否还有其他方法d_type
,或者使用它是否实际上没有错。
我目前正在实现自己的“ls”命令。我一直依赖该结构,但我发现一篇旧帖子指出d_type
不应使用该结构的某些成员,例如。
我已经能够列出存储库中的文件,但我想根据文件类型对文件进行排序,这就是我发帖的原因。
所以我只是想知道除了使用它之外是否还有其他方法d_type
,或者使用它是否实际上没有错。
如果你的问题是关于 Ubuntu 的,即 Linux/glibc,readdir 手册页对此有详细描述。它
dirent
确实有该d_type
字段。但请记住,它可能DT_UNKNOWN
随时给你,你应该能够处理它。d_type
对此进行编码的最可移植(POSIX)方式是完全不依赖于,因为 POSIX 仅要求d_name
和d_ino
字段。那么,如果您没有 d_type 字段或者它给了您一个未知值,该怎么办?使用其中一个函数
stat
(用于列出可能lstat
不会跟随链接的文件),然后对于 glibc,您可以按照结果中字段上的“测试文件类型”进行操作。st_mode
stat