Cには2つのプロジェクトがあります。
最初:
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;
}
最初のプログラムは、他の人がファイルから読み取れるようにしながら、ファイルを開いて読み取ることになっています。2つ目は、読み取り用にファイルを開くことになっています。
プログラムを実行すると、2番目のプログラムでエラー32(ERROR_SHARING_VIOLATION)が発生します。
FILE_SHARE_READの全体的なポイントは、ファイルが既に開いているかどうかに関係なく、他のスレッド/プロセスが読み取りのためだけにファイルを開くことができるようにすることだと思いました。
誰かが私がこの問題を解決するのを手伝ってもらえますか?
PSファイルがメールスロットだった場合、それは何か違いがありますか?