操作系统主要靠两个结构体来维护一个文件,分别是dentry和inode
如下图所示,操作系统对于一个文件的管理模式
硬链接的本质就是创建一个新的目录项dentry,虽然文件名不同,但指向的是同一个inode节点,所以修改一个硬链接,其它文件的内容也会随之改变,本质上修改的是同一处磁盘空间
一.目录操作函数
目录也是一种文件,它存放其下的目录项
1.oepndir
所需头文件:
#include<unistd.h>
#include<dirent.h>
DIR* = opendir(const char * )
用于打开一个目录,返回一个目录结构体指针(DIR类型),失败返回NULL
2.readdir
reddir函数用于读取目录,每次读取一个目录项,返回一个目录项结构体指针(dirent类型),一个dirent结构体中包含d_ino(inode编号),d_name(文件名)等内容。
dirent * = readdir(DIR*dirp)
当读取到目录流末时,返回NULL
3.closedir
与文件关闭不同,关闭目录流用的是closedir(DIR* );
通过以opendir返回的DIR指针做参数,关闭目录流。