Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux / 一步一步学Linux C:Linux文件组织信息

与Linux 系统中的文件相关的信息有三项。它们是文件的目录结构、索引节点和文件的数据本身。1.文件的目录结构系统的每一个目录都处于一定的目录结构中,该结构含有目录中所有的目录项的列表,每一个目录项都含有一个名称和索引节点。借助于名称,应用程序可以访问目录项的内容。而索引节点号则提供了所需引用文件自身的信息。2.索引节点在Linux 系统中,所有的文件都有一个与之相连的索引节点(inode)。索引节点是用来保存文件信息的。索引节点包含如下信息。在linux2.6.39/include/asm-generic/stat.h中定义了stat 结构体来存放这些信息。stat 结构的定义如下。
  1. struct stat  
  2.   
  3. {  
  4. dev_t st_dev; /*device*/  
  5.   
  6. ino_t st_inl; /*inode*/  
  7.   
  8. mode_t st_mode; /*projection*/  
  9.   
  10. nlink_t st_nlink; /number of hard links*/  
  11.   
  12. uid_t st_uid; /*user ID of owner*/  
  13.   
  14. gid_t st_gid; /*group ID of owner*/  
  15.   
  16. dev_t st_rdev; /*device type(if inode device)*/  
  17.   
  18. off_t st_size; /*total size,in bytes*/  
  19.   
  20. unsigned long st_blksize; /*blocksize for filesystem*/  
  21.   
  22. unsigned long st_blocks; /*number of blocks allocated*/  
  23.   
  24. time_t st_atime; /*time of last access*/  
  25.   
  26. time_t st_mtime; /*time of last modification*/  
  27.   
  28. time_t st_ctime; /*time of last change*/  
  29.   
  30. };  
可以通过系统调用访问stat 结构来获取索引节点的相关信息。注:从索引节点包含的信息中,可以看到两个参数st_dev 和st_rdev。它们具有不同的含义。st_dev 对应于每一个文件名,代表包含这个文件名和相应的索引节点的文件系统的设备号。st_rdev 则只有字符设备文件或块设备文件才具有,表示的是实际设备的设备号。3.数据通常文件中都包含有一定的数据。普通文件和目录文件都有相应的硬盘区域储存数据。这些数据是储存在由索引节点指定的位置上的。而其他一些特殊文件,如设备文件等,并不具有这样的在硬盘上的储存区域。