Her şey başlıkta, ancak daha resmi olarak:
Windows neden çalışan bir yürütülebilir dosyayı yeniden adlandırmama izin veriyor, ancak onu silmiyor?
Her şey başlıkta, ancak daha resmi olarak:
Windows neden çalışan bir yürütülebilir dosyayı yeniden adlandırmama izin veriyor, ancak onu silmiyor?
Yanıtlar:
Gerçekten bir dosyayı yeniden adlandırma diye bir şey yoktur. Bir dosyanın birden fazla adı olabilir veya adı olmayabilir, bu nedenle yeniden adlandırdığınız dosya değil, dizin girişi olur. Yeniden adlandırma, dizin girişinde, dosyanın yürütme için kilitli olmasından etkilenmeyen bir işlemdir.
dwShareMode
sıfıra ayarlamak veya OF_SHARE_COMPAT
veya OF_SHARE_EXCLUSIVE
bayraklarını kullanmak.
Yürütülebilir dosyanın ve DLL'lerin silinmesine izin vermez, çünkü Windows yürütülebilir dosyaların parçalarını işlem oluşturmanın bir parçası olarak belleğe eşler, bu nedenle işlemin ömrü boyunca dosyaya ihtiyaç duyar.
Ne yazık ki hala bu dosyaları yeniden adlandırmaya izin neden gerçek bir neden yok. Bu hizmet kesintisi süresini en aza indirmek için çalışırken dll ve exe dosyalarının güncelleştirilmesini etkinleştirmek için yapılır sanırım.
Bunun aksine, linux (genel olarak unix) yürütülebilir bir dosyayı çalışırken siler:
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