2014-04-07 51 views
1

我有一个关于linux中共享库的问题。如果进程映射具有写入权限的共享库并写入,它是否会触发写入时复制?Linux中共享库内存映射的访问权限

例如,过程A的存储器映射具有以下输入:

00-40336000 r-xp 00000000 b3:15 875  /system/lib/libm.so 
40336000-40337000 r--p 00014000 b3:15 875  /system/lib/libm.so 
40337000-40338000 rw-p 00015000 b3:15 875  /system/lib/libm.so 

的第三条目具有权限RW-P,这意味着它具有写权限。因此,如果进程A写入此部分,写入时复制是否被触发?如果是这样,是否意味着具有共享库的相同映射的其他进程将不会看到数据进程A写入?

嘉文

回答

3

因为映射是私有的,其他进程将无法获得的写的变化

http://man7.org/linux/man-pages/man2/mmap.2.html(MAP_PRIVATE将确保A的更改不会反映)

+1

(这是什么'p '在'rw-p'结尾处意味着)。 – caf

+0

但是如果A没有写入,内存仍然与其他进程共享,对吧? – jiawen