답변:
실제로 파일 이름을 바꾸는 것과 같은 것은 없습니다. 파일은 하나 이상의 이름을 갖거나 이름을 가질 수 없으므로 이름을 바꾸려는 파일이 아니라 디렉토리 항목입니다. 이름 바꾸기는 디렉토리 항목에 대한 작업이며 파일이 실행을 위해 잠겨 있다는 사실의 영향을받지 않습니다.
dwShareMode
0으로 설정 OF_SHARE_COMPAT
하거나 또는 OF_SHARE_EXCLUSIVE
플래그를 사용합니다 .
Windows는 실행 파일의 일부를 프로세스 작성의 일부로 메모리에 맵핑하므로 실행 파일 및 DLL을 삭제할 수 없으므로 프로세스 수명 동안 파일이 필요합니다.
불행히도 여전히 그러한 파일의 이름을 바꿀 수있는 진정한 이유는 없습니다. 이것은 서비스 중단 시간을 최소화하기 위해 실행중인 dll 및 exe 파일의 업데이트를 가능하게하기 위해 수행 된 것 같습니다.
반면 리눅스 (일반적으로 유닉스)는 실행 파일이 실행되는 동안 삭제할 수 있습니다 :
tmp]$ cp /usr/bin/md5sum .;ll md5*; \
(./md5sum /home/pub/iso/FC5/FC-5-i386-DVD.iso & ); \
rm md5sum ; ll md5*;ps -f
-rwxr-xr-x 1 sergey sergey 37276 Oct 16 02:38 md5sum
ls: cannot access md5*: No such file or directory
UID PID PPID C STIME TTY TIME CMD
sergey 2423 2422 0 02:32 pts/1 00:00:00 -bash
sergey 2533 1 0 02:38 pts/1 00:00:00 ./md5sum /home/pub/iso/FC5/FC-5-
sergey 2536 2423 0 02:38 pts/1 00:00:00 ps -f