非常感谢cceczjxy给我的留言,我好像有点明白了.
在我这边的情况中,所有操作都是用root运行的,所以可能不是原因1.
应该是原因2,不过还是有些问题.例如:1.dlopen使用mmap把.so的内容映射到内存,这时对.so文件的改动应该不会影响进程空间,否则也不会把.so文件删除了,进程还可以运行.所以,直接覆盖.so文件(我使用的是cp命令)只是仅仅影响了文件中数据,而不关系到进程.2.我试验过,即使是用一个完全相同的.so文件覆盖(cp命令),也会产生段错误,这是不是说明
文件中的数据是否改变,和进程空间无关?.3.是不是mmap就是如下这么实现的:你把一个文件映射到进程空间后,你删除,ok,没问题,但是你不能write(cp命令实际上就是使用了write系统调用)这个文件,无论你写什么,否则就有段错误.
以上只是我的一点点理解,还希望cceczjxy多多指点