我做了一个小实验。首先我在终端中运行以下命令:
mkdir test
cd test
echo "A" > a
echo "B" > b
ln a.txt c
现在a
和c
具有相同的内容,A
以及相同的 inode 编号。然后我可以c
使用 vim 编辑,以包含C
而不是A
和a
也将包含 C,因为它们是同一个文件。
但是,如果我再次进行相同的实验,但使用 TextEdit 而不是 vim,则在保存时似乎会创建一个新文件。c
获取一个新的 inode 编号并a
仍然包含A
。 这是为什么? 发生了什么事?
答案1
也许 TextEdit 的保存程序是这样工作的:
- 将内容存储到与原始文件名称不同的文件中,以确保所有内容都正确写入磁盘。如果内容已成功写入磁盘,请继续。
- 取消链接旧文件名
- 将新文件重命名为“旧文件名”
- 释放旧文件名的文件描述符。