다른 플래그 (이 경우 FILE_FLAG_NO_BUFFERING이있는 플래그와없는 플래그)를 사용하여 같은 파일을 두 번 열 수 있습니까 (CreateFileA 포함)?동일한 파일을 다른 플래그로 두 번 여는 중입니까?
자세한 내용은 다음과 같습니다. 시작시 임시 파일을 만듭니다 (FILE_FLAG_DELETE_ON_CLOSE 포함). 나는 그것을 순차적으로 채우고, 나는이 부분에서 버퍼링되지 않은 IO를 수행하는 것에 대해 걱정하고 싶지 않다. 그런 다음 프로세스가 실행되는 동안 버퍼링되지 않은 입출력을 사용하여 해당 파일에 액세스하려고합니다. 내 자신의 캐싱 논리가 있기 때문입니다. 따라서 FILE_FLAG_NO_BUFFERING을 사용하여 동일한 파일을 다시 열어 본 다음 이전 핸들을 닫을 생각입니다. 두 가지 이유로이 중복 된 방법으로이 작업을 수행하려고합니다.
- 동시성. 새 핸들을 열기 전에 이전 핸들을 닫으면 다른 누군가가 그 동안 파일을 엉망으로 만들 수 있습니다.
- FILE_FLAG_DELETE_ON_CLOSE는 다른 핸들을 열지 않고 첫 번째 핸들을 닫으면 파일을 삭제합니다. 이것은 내가 해결할 수있는 사소한 성가심입니다.
무작위 질문 : 왜 'CreateFileW' 대신에'CreateFileA'를 사용하고 싶습니까? – Joey
전체 시스템을 직접 작성하지는 않았지만이 부분 만 작성했습니다. 그들은 파일 이름을 char *로 지정했기 때문에 char * :-)로 사용했습니다. 게다가 WCHAR이 어째서 어리석은 지에 대한 전체 호언 장담을 쓸 수있었습니다. 물론 윈도우 API에서 그 사용법이 너무 풍부하다는 점을 제외하고는 당신은 그것을 사용해야 만합니다. –
아, 좋아. 죄송합니다. 여기에 감정을 나타내지 만, 필자는 레거시 코드 페이지에 맞지 않는 유니 코드를 사용하는 폴더가 몇 개 있기 때문에 파일을 열지 않는 응용 프로그램에서 충분히 자주 물지는 경우가 있습니다. – Joey