题
据我所知,目录在UNIX只是一个文件,其中包含inode编号和中的文件的名称。如何来看看吗?我不能使用cat以下的目录中,打开它,在vi只是表明我的文件列表...没有inode编号。
解决方案
由于这是一个编程问题(它的是的编程问题,不是吗?),你应该看看opendir
,readdir
和closedir
功能。这些是单一UNIX规格的一部分。
#include <sys/types.h>
#include <dirent.h>
DIR *opendir (const char *dirname);
struct dirent *readdir(DIR *dirp);
int closedir(DIR *dirp);
在dirent.h
文件应具有所需的结构,含有至少:
char d_name[] name of entry
ino_t d_ino file serial number
请参阅这里的readdir
手册页 - 它包含指向其他
请注意,信息有关存储在目录条目指定一个文件的数量是最小的。 i节点本身包含你从stat
功能得到的东西,像时间,大小,所有者,权限等等,随着实际文件内容的所有重要指针。
其他提示
在过去的日子 - 7版本,系统III,早期的系统V - 你确实可以打开一个目录和内容读到内存,特别是对于具有2个字节的inode编号旧的Unix文件系统和14个字节的限制上的文件名。
作为更特殊的文件系统变得更加普遍时,执行opendir(),readdir的(),closedir()系列的函数调用有因为解析目录的内容变得越来越不平凡的,以替代使用。
最后,在过去十年左右的时间,它已经达到在大多数系统中,您无法读取目录的地步;你可以打开它(主要目的是让如fchdir(操作)可以工作),您可以使用电话的执行opendir()系列阅读。
它看起来像 stat
命令一>可能是为了。从文章:
stat /etc/passwd
File: `/etc/passwd'
Size: 2911 Blocks: 8 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 324438 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2008-08-11 05:24:17.000000000 -0400
Modify: 2008-08-03 05:11:05.000000000 -0400
Change: 2008-08-03 05:11:05.000000000 -0400
不隶属于 StackOverflow