c++ - 通过检测文件打开(创建)进行进程同步

标签 c++ windows file

有两个应用程序。 第一个应用程序对有问题的机器是远程的(我无权访问它)并通过网络 (LAN) 创建一个大文件。我无法控制此过程,也不知道它何时发生。这就是我必须与之合作的。我无法以任何方式添加、更改或改变它。

第二个应用程序是我写的,找到这个文件就处理它。此应用计划每 5 分钟运行一次。

当我的应用程序尝试处理文件时,可能会出现文件正在写入的情况,导致处理不完整和/或其他错误,因此我需要在开始之前检测文件是否已完全写入处理它。

我可以使用 OpenFile() 并请求读/写锁定访问。错误将指示正在创建文件。

我可以用文件系统观察器做一些聪明的事情 http://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher.aspx

但我怀疑有一种我没有想到的适用于 Windows(NT 及更高版本)的优雅方式

最佳答案

我认为您的系统观察器解决方案是通过 FileSystemWatcher 或 ReadDirectoryChanges是你能得到的最好的。你可以看看this tutorial在 CodeProject 中也是如此。它还能变得更加优雅吗?

关于c++ - 通过检测文件打开(创建)进行进程同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/760766/

相关文章:

c++ - 为什么在创建线程时会出现段错误?

c# - Windows 7 中的 ASP.NET 项目和 IE10 兼容模式问题

mysql - 将 html 页面存储在 Mysql 数据库或文件中

python - 类型错误 : "NoneType" object is unsubscriptable

java - 无法保存扩展名为 .json 的文件

c++ - 如何对大型文本文件运行字典搜索?

c++ - 如何创建两个派生自另一个的 ATL 接口(interface)?

c++ - 如何使用 MFC 禁用顶层菜单项并将其变灰

c - Qt 5.2.1 出现错误 “collect2.exe: Id returned 1 exit status”

c++ - 外部 dll 中缺少 Qt 信号