有两个应用程序。 第一个应用程序对有问题的机器是远程的(我无权访问它)并通过网络 (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/