我在 C 中有两个项目:
首先:
include windows.h
include stdio.h
include tchar.h
int main()
{
HANDLE hFile = CreateFile("D:\\f.txt",
GENERIC_WRITE,
FILE_SHARE_READ,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL);
if(hFile == INVALID_HANDLE_VALUE)
_tprintf("Error: CreateFile %d\n",GetLastError());
Sleep(5000);
return 0;
}
第二:
include windows.h
include stdio.h
include tchar.h
int main()
{
HANDLE hFile = CreateFile("D:\\f.txt",
GENERIC_READ,
FILE_SHARE_READ,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL);
if(hFile == INVALID_HANDLE_VALUE)
_tprintf("Error: CreateFile %d\n",GetLastError());
return 0;
}
第一个程序应该打开文件进行读取,同时允许其他人从中读取。第二个应该打开文件进行阅读。
当我运行程序时,第二个给我错误 32 (ERROR_SHARING_VIOLATION)。
我认为 FILE_SHARE_READ 的全部意义在于允许其他线程/进程打开一个文件只是为了读取,无论它是否已经打开。
谁能帮我解决这个问题?
PS如果文件是一个邮槽,那会有什么不同吗?