link函数用于创建一个指向已存在文件的新目录项。函数原型如下:
#include <unistd.h>
int link(const char *existingpath, const char *newpath);
返回值:若成功则返回0,若失败则返回-1
参数:
existingpath 一个以存在文件的路径
newpath 新目录项的路径
一、目录项和硬链接
可以这么理解,不管是fat32还是ext3等文件系统,无论它的管理策略如何复杂,对于这些文件系统之下的一个文件来说都包括两个方面的属性:
数据属性和管理属性。数据属性由数据应用程序来解释,以特定模型来描述,例如网页文件就用html规范模型来描述。文件系统一般不构造这些具体模型来解释它所管理的数据,一切文件数据在文件系统看来都是一个个的0和1。
管理属性是因文件管理目的而产生的。文件系统会用具体的模型来描述文件的管理属性并做精确解释,不同的文件系统下的文件管理属性是有差别的。unix系统可以让多个文件系统同存。在具体的文件系统上层再加一层抽象文件系统,把不同的文件系统的差异屏蔽掉,抽象出一些通用模型,这个模型之一就是stat结构(参考《4.2 stat函数》)。
目录项也是文件的一种管理属性,它是为了方便我们用/tmp/myfile之类的人性化路径操作文件而设计的一种数据结构,也是文件管理属性的一个具体存储结构。
文件系统不应该主动去改变文件的数据属性,它应听从于具体应用程序去改变文件的数据属性。
文件系统可以主