首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用与kate编辑器的硬链接

使用与kate编辑器的硬链接
EN

Stack Overflow用户
提问于 2016-08-15 02:37:18
回答 3查看 314关注 0票数 1

我在linux mint中使用link命令时遇到了问题。

我创建了file1并添加了一个指向该文件的新硬链接:

代码语言:javascript
复制
link file1 file2

我知道当我改变file1的内容时,file2也应该改变。

当我使用vim编辑file1或者使用重定向向它添加文本时,它工作得很好,但是当

我用kate编辑器编辑file1,然后它就像是编辑器断开了file2的链接!在那之后当

我用kate或者vim修改了file1的内容...文件2将永远不会再更改。

有什么问题吗?

EN

回答 3

Stack Overflow用户

发布于 2016-09-22 22:16:44

我是凯特的开发者之一。问题如下:当凯特保存时,它通过保存到同一文件夹中的临时文件来完成,成功时只需移动到所需的位置。

此移动操作正是销毁硬链接的原因:首先,删除硬链接,然后重命名临时文件。

虽然这避免了数据丢失,但正如您所经历的那样,它也有自己的问题。我们在这里跟踪这个bug:

会删除指向文件的硬链接

此外,QSaveFile还有两个更深层次的问题,在这里进行跟踪:

时被取消链接

解决方案是直接在所有这些边角情况下编写代码,这样我们就可以在系统崩溃的情况下以丢失数据为代价来避免这种麻烦,所以这是一个权衡。为了解决这个问题,我们需要修补Qt,但到目前为止还没有人这样做。

票数 3
EN

Stack Overflow用户

发布于 2016-08-15 03:05:03

不同的程序以不同的方式保存文件。至少有两个出现在脑海中:

  • 打开现有文件并覆盖其内容创建临时文件,在其中写入新内容,然后以某种方式将原始文件替换为新文件(删除旧文件并重命名新文件;或者重命名旧文件,重命名新文件,然后删除旧文件;或者使用系统函数交换文件内容(实际上是交换文件名称),然后删除旧文件;或者...)

从它目前的源代码来看,Kate使用的是后一种方法(虽然最后使用的是direct write fallback,但使用的是QSaveFile )。为什么?通常,为了使文件保存或多或少是原子的,并确保保存不会因为缺少空闲空间而导致错误(尽管这也意味着它在保存时使用新旧文件大小之和的空间)。

票数 1
EN

Stack Overflow用户

发布于 2016-08-15 02:47:45

我在Linux Mint上没有凯特,但我注意到了一些问题,这些问题让我怀疑你可能遇到了一个"bug“。

这里有两个已经报道的硬链接的“类似”问题。

Bug 316240 - KSaveFile: Kate/kwrite makes a copy of a file while editing a hard link

"Hard link not supported" with NTFS on Linux #3241

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38945393

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档