다른 프로세스에서 계속 쓰는 (수정 할 수없는) 버퍼 파일에서 이진 데이터를 읽으려고합니다. 파일을 열 때 다음 코드를 사용하고 있습니다.다른 프로세스에서 파일을 쓰는 동안 파일 읽기
fileH = CreateFileA((LPCSTR)filename,
GENERIC_READ,
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL, NULL);
오류없이 올바르게 열립니다. 그러나 파일에서 데이터를 읽을 때 손실 데이터 이후 파일에 쓰는 다른 프로세스를 차단하는 것 같습니다.
버퍼는 원형이며 파일 크기가 고정되어 있고 새로운 데이터가 버퍼의 이전 데이터에 지속적으로 기록됩니다.
편집 : 때때로 사소한 솔루션이 작동 ... 나는 소프트웨어 회사에 연락하고 버그에 대해 그들에게, 그리고 하루 만에 그들이 수정과 새 버전을 게시 한
. 죄송합니다.이 기능을 모든 사용자에게 적용 할 수는 없습니다.
동시에 파일을 읽고 쓰는 것은 좋지 않습니다. 접근을 처리하기 위해'뮤텍스 (Mutex) '또는'이벤트 (Events)'를 사용해보십시오. –
@ bash.d, 정말? '꼬리 (tail)'및 이와 유사한 유틸리티에 대해 설명하십시오. 또한 프로세스를 동기화하기 위해 뮤텍스와 이벤트를 사용할 수 없습니다. 게다가 그는 다른 응용 프로그램을 수정할 수 없다고 말하고 있습니다. –
@aleguna 나락, 그렇습니다! 첫 번째 줄은 [여기] (http://msdn.microsoft.com/ko-kr/library/windows/desktop/ms686927(v=vs.85)asp)입니다. –