.so库中的全局变量

时间:2014-02-27 14:32:37

标签: c++ c linux shared-libraries

假设库x.so有一个全局变量y,它正由库中的函数(比如fun1)操纵。

当进程p1被加载到RAM中,其代码使用库fun1中的函数x.so时,库x.so将被加载到RAM中(如果尚未存在) ld.so并在程序开始执行之前解析函数符号。

现在创建了这个全局变量。它正在进行中p1吗?

当另一个流程p2也使用fun1(在y上进行操作)时会发生什么?

2 个答案:

答案 0 :(得分:6)

进程将获得y的私人副本,并在您致电exec时将其替换为新副本。它将驻留在库的数据段中。

答案 1 :(得分:2)

在到达y入口点之前,在启动时加载库时,每个进程都会创建自己的变量main实例。