【发布时间】:2010-12-07 06:22:42
【问题描述】:
CreateFile() 可以在两个不同的线程中同时打开一个文件
void new_function(void * what)
{
HANDLE h = CreateFile("c:\\tmp", GENERIC_ALL,FILE_SHARE_WRITE |
FILE_SHARE_READ , NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (h == INVALID_HANDLE_VALUE)
{
DWORD d = GetLastError();
return ;
}
Sleep(10000);
}
int main()
{
HANDLE h = CreateFile("c:\\tmp", GENERIC_ALL,FILE_SHARE_WRITE | FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
Sleep(10000);
return 1;
}
每次它在GetLastError 位置退出。错误是ERROR_SHARING_VIOLATION (32, "The
进程无法访问该文件,因为它正被另一个进程使用
过程。”)
如果我不能共享打开文件,那么FILE_SHARE_WRITE | FILE_SHARE_READ有什么用
感谢
The program environment is Win32 Vs2003
【问题讨论】:
-
你需要说什么语言,什么操作系统,什么版本。
-
在我看来像 C。 CreateFile 是一个 Win32() API。你会希望他更好地标记它......他是 24 天前加入的 63 名声望用户。保持平静。感谢您重新标记它。
标签: c winapi createfile