假设库x.so
有一个全局变量y
,它正由库中的函数(比如fun1
)操纵。
当进程p1
被加载到RAM中,其代码使用库fun1
中的函数x.so
时,库x.so将被加载到RAM中(如果尚未存在) ld.so并在程序开始执行之前解析函数符号。
现在创建了这个全局变量。它正在进行中p1
吗?
当另一个流程p2
也使用fun1
(在y
上进行操作)时会发生什么?
答案 0 :(得分:6)
进程将获得y
的私人副本,并在您致电exec
时将其替换为新副本。它将驻留在库的数据段中。
答案 1 :(得分:2)
在到达y
入口点之前,在启动时加载库时,每个进程都会创建自己的变量main
实例。