我打开窗口中使用_findfirst函数的文件,但我只想打开其他进程不打开的文件。 情况是,我将扫描一个目录读取文件,并删除它们,而其他进程中创build新的文件。
为了避免竞争条件,我发现这个问题 ,提到可以打开一个no sharing选项的文件。 但是,这是如何做到的?
更新:我没有关于写入过程的控制,所以不知道在创build文件时使用哪个标记(如果没有)。 此外,写作过程可能会改变(第三方软件)。
为什么在Windows上没有boost :: date_time和microsec分辨率?
如何在Windows上安装节点jscanvas
如何通过SMTP从C ++发送附件?
使用指定path的Java JDK无提示安装
使用Bonjour而不在Win7上安装框架
无法findtypes或命名空间“Mono”
钩closures应用程序
完全合格的path比。 规范path
保持Python脚本在屏幕locking后运行(Win。7)
更改进程优先级不起作用
假设你的2个进程是唯一可以打开文件的进程,那么从MSDN打开示例 :
hFile = CreateFile(argv[1],// name of the write GENERIC_WRITE,// open for writing 0,// *** do not share *** NULL,// default security CREATE_NEW,// create new file only FILE_ATTRIBUTE_norMAL,// normal file NULL); // no attr. template
通过在写入过程中使用它,你可以在读取过程中检查INVALID_HANDLE_VALUE,在这种情况下,如果GetLastError()返回ERROR_SHARING_VIOLATION,那么你知道你的文件是由另一个没有共享的进程打开的。
更多细节可以在CreateFile文档中找到
调用OpenFile和uStyle (第三参数)至少添加OF_SHARE_EXCLUSIVE 。
打开没有共享选项的文件,可以使用
HANDLE hFile = CreateFile("somFileName",GENERIC_WRITE,/*no sharing; other options are FILE_SHARE_READ,FILE_SHARE_WRITE etc*/ NULL,OPEN_EXISTING,FILE_ATTRIBUTE_norMAL,NULL);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。