C++ fstream은 ios::out|ios::in 모드에서 txt 파일을 열지만, 프로그램이 실행되는 동안 메모장은 파일을 수정할 수 있습니다.
참고: Win7 x64의 경우 계정은 관리자입니다. UAC가 없으므로 직접 관리자입니다.
으아악
확인을 클릭하면 다른 이름으로 저장 대화 상자가 나타나고 결과를 덮어쓸 수 있습니다.
프로그램은 계속 실행 중이지만 파일이 수정되었습니다.
원래는 sublimetext를 사용하여 직접 수정할 수 없었지만 메모장을 약간 조작한 후에는 이제 sublimetext도 수정할 수 있습니다.
프로그램 실행 중에 다른 프로그램이 특정 파일을 쓰거나 삭제하는 것을 방지하는 방법을 알려주세요.
감사합니다.
먼저 문제에 대해 이야기해 보겠습니다. 메모장이 이전 파일을 덮어쓴 후 프로세스에서 연 파일은 이전 파일이고(이전 파일은 여전히 있지만 볼 수 없음) 다시 편집하는 파일은 이미 있습니다.
새 파일.Linux에서는 필수 잠금도 연결 해제로 우회할 수 있으므로 Linux에서는 이 문제를 피할 수 있는 방법이 없습니다.
Windows의 시스템 API는 특정 기능을 제공해야 하지만 "이 파일은 프로세스에 의해 점유되어 있으므로 삭제할 수 없습니다."라는 말을 자주 접하기 때문에 이를 잘 알고 있지만 이 제한을 우회하는 것도 배제하지 않습니다
이 질문은 매우 흥미롭습니다. 문제 해결 아이디어는 다음과 같습니다.
파일 IO 캐시 문제인가요?
편집기--시스템 버퍼---엔티티 파일
파일 읽기-쓰기 잠금 문제인가요?
(귀하의 코드가 읽기 및 쓰기 가능한 방식으로 파일을 열고 연결을 설정하더라도 읽기만 사용하며 읽기 잠금은 배타적이지 않은 것 같습니다.)