检查文件是不是在应用程序之外被修改
Posted
技术标签:
【中文标题】检查文件是不是在应用程序之外被修改【英文标题】:Check if file was modified OUTSIDE the application检查文件是否在应用程序之外被修改 【发布时间】:2013-09-28 10:47:18 【问题描述】:我有一个应用程序,它使用inotify
和std::thread
来检查文件是否在应用程序之外被修改。问题是当文件在应用程序内部被修改时,inotify
工作并且它被认为是在外部更新的。我的问题是,如何检查文件是否仅在应用程序之外被修改。几乎每个文本编辑器都以这种方式工作(当文件在外部修改时,它会要求重新加载。但是当您在内部修改文本时,它不会要求类似的东西)。这些应用程序是如何设计的?
【问题讨论】:
它是特定于操作系统的。你提到inotify
所以可能是针对Linux
【参考方案1】:
我不知道编辑器是如何做到这一点的,但我希望当应用程序向文件本身写入数据时,它“知道”它是在写入,所以要么在执行此操作时打开通知,要么只是说“当然,我知道我写了文件,所以我会忽略它”。
【讨论】:
我不知道如何告诉thread
“当然,我知道我写了文件,所以我会忽略它”
嗯,这当然是你必须弄清楚的事情。也许具有“我上次写入文件时的时间戳”的全局变量[或存储在线程可以到达的某处的非全局变量,例如在线程上下文中]可能会这样做?不要忘记使用某种保护措施,这样在检查编写器线程和“检查器线程”之间共享的变量时就不会发生数据争用。以上是关于检查文件是不是在应用程序之外被修改的主要内容,如果未能解决你的问题,请参考以下文章
将文件存储在 iphone 的沙盒之外或通过其他应用程序访问文件系统