
Linux 시스템에서처럼 잠긴 파일을 덮어쓸 수 있도록 Windows에서 파일 잠금을 비활성화하려면 어떻게 해야 합니까?
저는 dll이라는 플러그인을 개발 중입니다. 다시 컴파일하기 전에 항상 로드한 프로그램에서 언로드해야 합니다. 항상 컴파일하고 나중에 다시 언로드/로드하여 다시 로드할 수 있다면 작업량이 많이 줄어들 것입니다. Linux에서는 문제가 되지 않습니다. 컴파일러는 플러그인을 무시하고 다음에 플러그인을 열 때 새 버전이 사용됩니다. Windows에는 쓰기 잠금이 있으므로 컴파일러는 이를 쓸 수 없으며 중단됩니다.
답변1
실행 파일/라이브러리 파일의 잠금을 "그냥" 비활성화할 수는 없습니다.
그러나 다음을 수행할 수 있습니다.이동 또는 이름 바꾸기사용 중인 파일이 있으므로 빌드 프로세스에서 기존 DLL을 다른 곳으로 이동하고 그 자리에서 새 DLL을 컴파일하도록 합니다.
OS의 다양한 부분에서 가정하기 때문에 숨겨진 스위치를 추가하지 않았을 가능성이 매우 높습니다.항상 켜져 있을 거야. 예를 들어, 파일 시스템 코드는 파일에 대한 링크가 항상 하나 이상 있을 것으로 예상할 수 있습니다(따라서 마지막 링크를 삭제한 후 즉시 공간을 확보할 수 있음). 따라서 사용 중인 파일을 강제로 삭제하면 동일한 디스크 공간을 사용하는 두 개의 파일과 같은 다양한 종류의 파일 시스템 손상이 발생할 수 있습니다.
즉,오래된 새로운 것WinNT 커널에서 Linux 스타일 파일 삭제를 허용하는 것이 실제로 어렵지 않을 것이며 일부 호환성 문제를 피하기 위해 그렇게 하지 않았다고 쓴 적이 있습니다.