찾다

 >  Q&A  >  본문

파일 잠금 - C++ fstream은 ios::out|ios::in 모드에서 txt 파일을 열지만 프로그램이 실행되는 동안 메모장이 파일을 수정할 수 있습니까?

C++ fstream은 ios::out|ios::in 모드에서 txt 파일을 열지만, 프로그램이 실행되는 동안 메모장은 파일을 수정할 수 있습니다.

참고: Win7 x64의 경우 계정은 관리자입니다. UAC가 없으므로 직접 관리자입니다.

으아악

확인을 클릭하면 다른 이름으로 저장 대화 상자가 나타나고 결과를 덮어쓸 수 있습니다.

프로그램은 계속 실행 중이지만 파일이 수정되었습니다.

원래는 sublimetext를 사용하여 직접 수정할 수 없었지만 메모장을 약간 조작한 후에는 이제 sublimetext도 수정할 수 있습니다.

프로그램 실행 중에 다른 프로그램이 특정 파일을 쓰거나 삭제하는 것을 방지하는 방법을 알려주세요.
감사합니다.

世界只因有你世界只因有你2774일 전1118

모든 응답(2)나는 대답할 것이다

  • 我想大声告诉你

    我想大声告诉你2017-05-16 13:26:22

    먼저 문제에 대해 이야기해 보겠습니다. 메모장이 이전 파일을 덮어쓴 후 프로세스에서 연 파일은 이전 파일이고(이전 파일은 여전히 ​​있지만 볼 수 없음) 다시 편집하는 파일은 이미 있습니다.

    새 파일.

    Linux에서는 필수 잠금도 연결 해제로 우회할 수 있으므로 Linux에서는 이 문제를 피할 수 있는 방법이 없습니다.

    Windows의 시스템 API는 특정 기능을 제공해야 하지만 "이 파일은 프로세스에 의해 점유되어 있으므로 삭제할 수 없습니다."라는 말을 자주 접하기 때문에 이를 잘 알고 있지만 이 제한을 우회하는 것도 배제하지 않습니다

    회신하다
    0
  • 高洛峰

    高洛峰2017-05-16 13:26:22

    이 질문은 매우 흥미롭습니다. 문제 해결 아이디어는 다음과 같습니다.

    1. 파일 IO 캐시 문제인가요?
      편집기--시스템 버퍼---엔티티 파일

    2. 파일 읽기-쓰기 잠금 문제인가요?
      (귀하의 코드가 읽기 및 쓰기 가능한 방식으로 파일을 열고 연결을 설정하더라도 읽기만 사용하며 읽기 잠금은 배타적이지 않은 것 같습니다.)

    회신하다
    0
  • 취소회신하다