Answers:
确实没有重命名文件之类的事情。一个文件可以有多个名称,也可以没有名称,因此它不是您要重命名的文件,而是目录条目。重命名是对目录条目的一项操作,不受文件锁定执行的事实的影响。
dwShareMode
为零或使用OF_SHARE_COMPAT
或OF_SHARE_EXCLUSIVE
标志。
它不允许删除可执行文件和DLL,因为Windows在过程创建过程中将部分可执行文件映射到内存中,因此它在过程的生存期内需要该文件。
不幸的是,我没有真正的理由为什么它仍然允许重命名此类文件。我猜想这样做是为了在运行dll和exe文件时启用它们的更新,以最大程度地减少服务中断时间。
相比之下,linux(通常是unix)允许在运行时删除可执行文件:
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