当我ls -l /dev
在OS XI上运行时,获取具有以下格式的输出(但是更多文件):
crw-rw-rw- 1 root wheel 4, 126 Jun 11 20:28 ttywe
crw-rw-rw- 1 root wheel 4, 127 Jun 11 20:28 ttywf
Run Code Online (Sandbox Code Playgroud)
据我所知,它是特定于该文件夹,我无法找到任何4,
意味着什么.我ls
在C中重写,所以我想知道它是什么,如果可能的话,如何在C中检索该值.
如果文件是字符特殊文件或块特殊文件,则文件的大小可以用与所讨论的设备相关联的实现定义的信息替换.
在这种特殊情况下,您几乎肯定有一个实现打印主要和次要设备号 - 将传递mknod
给创建指向同一设备的文件的值.但是,没有实现需要提供这些信息,以及您的实现ls
可以与没有它的标准一致.
如果你想知道如何在C中实现它,一个好的起点是man 2 stat
.st_rdev
是您关注的字段struct stat
,此调用填写了该字段.在Linux上,你可以通过调用宏提取主要和次要号码MAJOR(stat_result.st_rdev)
和MINOR(stat_result.st_rdev)
(假设你告诉stat
写信给一个叫结构stat_result
).