检查文件是不是在应用程序之外被修改

Posted

技术标签:

【中文标题】检查文件是不是在应用程序之外被修改【英文标题】:Check if file was modified OUTSIDE the application检查文件是否在应用程序之外被修改 【发布时间】:2013-09-28 10:47:18 【问题描述】:

我有一个应用程序,它使用inotifystd::thread 来检查文件是否在应用程序之外被修改。问题是当文件在应用程序内部被修改时,inotify 工作并且它被认为是在外部更新的。我的问题是,如何检查文件是否仅在应用程序之外被修改。几乎每个文本编辑器都以这种方式工作(当文件在外部修改时,它会要求重新加载。但是当您在内部修改文本时,它不会要求类似的东西)。这些应用程序是如何设计的?

【问题讨论】:

它是特定于操作系统的。你提到inotify 所以可能是针对Linux 【参考方案1】:

我不知道编辑器是如何做到这一点的,但我希望当应用程序向文件本身写入数据时,它“知道”它是在写入,所以要么在执行此操作时打开通知,要么只是说“当然,我知道我写了文件,所以我会忽略它”。

【讨论】:

我不知道如何告诉thread“当然,我知道我写了文件,所以我会忽略它” 嗯,这当然是你必须弄清楚的事情。也许具有“我上次写入文件时的时间戳”的全局变量[或存储在线程可以到达的某处的非全局变量,例如在线程上下文中]可能会这样做?不要忘记使用某种保护措施,这样在检查编写器线程和“检查器线程”之间共享的变量时就不会发生数据争用。

以上是关于检查文件是不是在应用程序之外被修改的主要内容,如果未能解决你的问题,请参考以下文章

检查模型在控制器之外是不是有效

将文件存储在 iphone 的沙盒之外或通过其他应用程序访问文件系统

在 Rstudio 之外运行闪亮的应用程序

当规则禁止除用户之外的任何人阅读时,检查 Firestore 用户是不是存在

不是公共或私有的变量-Java

如何在我的 Vue.js 应用程序之外修改部分 DOM,例如 <link> 标记?