当进程运行的时候,ld.so 将可执行文件和共享库mmap到进程的虚拟地址空间。只有当一个page被访问的时候,才会加载到内存。
所以不是一下就立即加载的。
mmap之后,是不能修改文件的,尝试修改将返回Text file busy。
[yuanjianpeng@fedora test]$ ./a.out &
[2] 59437
[yuanjianpeng@fedora test]$ > a.out
-bash: a.out: Text file busy
但是可以删除文件,此时inode隐藏。
https://unix.stackexchange.com/questions/187931/modifying-binary-during-execution