4.15 link、unlink函数-创建和删除硬链接

link函数在Unix/Linux中用于创建文件的硬链接,允许同一文件有多个路径。硬链接通过共享相同的i节点实现。unlink函数则用于删除文件的一个硬链接,当文件的链接计数降为0时,内核才会真正删除文件内容。不允许对目录创建硬链接,但可以创建符号链接。unlink不仅能删除link创建的链接,也适用于所有形式创建的目录项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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之类的人性化路径操作文件而设计的一种数据结构,也是文件管理属性的一个具体存储结构。

文件系统不应该主动去改变文件的数据属性,它应听从于具体应用程序去改变文件的数据属性。

文件系统可以主动改变文件的管理属性,例如你每次调用read写入数据时,文件系统会自动地把文件的最后修改时间(stat.st_mtime)给改变了。但文件系统不会没有明确指示的时候自己调用read函数乱写些数据给你的文件。

文件的管理属性在文件系统看来,最重要的作用是作为文件的一种身

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值