我的平台是windows vista 32,带有visual c ++ express 2008.
例如:
如果我有一个包含4000个字节的文件,我可以同时从文件中读取4个线程吗?并且每个线程访问文件的不同部分.
线程1读取0-999,线程2读取1000 - 2999等.
请举一个C语言的例子.
我试图在Windows中同时打开一个文件进行书写和阅读.我有一个程序(每一秒)写入文件,一个程序从中读取.在unix中它完美地工作但它在Windows中不起作用(我无法打开已经打开的文件).我用fopen()打开文件.
我怎么解决这个问题?
EDIT2:
签出_fsopen它使用FILE *,并相应地设置共享标志.
编辑:
首先,一些代码:这是我用来打开文件的方式
FILE* f = NULL;
int res = fopen_s(&f, "c:\\temp\\File1.txt", "w");
if (res != 0) return;
while (true) {
Sleep(1000);
fprintf_s(f , "Some data");
}
fclose(f);
Run Code Online (Sandbox Code Playgroud)
阅读是在其他应用程序中,但确实如此fscanf.
固定代码:
char d[] = "data";
HANDLE h = CreateFile("c:\\temp\\f.txt", GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_WRITE | FILE_SHARE_READ, NULL, CREATE_ALWAYS, /*FILE_ATTRIBUTE_NORMAL*/ FILE_FLAG_WRITE_THROUGH, NULL);
if (h == INVALID_HANDLE_VALUE) return 0;
DWORD bytesW;
while(true) {
Sleep(100);
WriteFile(h, d, strlen(d), &bytesW, NULL);
}
CloseHandle(h);
return 0;
Run Code Online (Sandbox Code Playgroud)