C 如何解决共享模块的全局变量问题?

C 如何解决共享模块的全局变量问题?,c,dynamic-linking,C,Dynamic Linking,我最近在学习动态链接。 假设我有一个.so文件,其中包含一个名为global的全局变量。 如果在prog1和prog2中使用此.so文件,prog1和prog2如何具有全局变量的不同副本? 如果.so文件还需要使用全局变量,它如何使用prog1和prog2的不同副本?全局变量是变量的单个实例,在每个执行进程(程序)的本地可寻址内存中全局可访问 如果同一程序有多个实例在执行,或者这些程序共享一个公共库,那么它们仍然有自己的本地内存,其中包含一个全局变量区域。因此,每个程序都有自己的全局变量,这些变

我最近在学习动态链接。 假设我有一个.so文件,其中包含一个名为global的全局变量。 如果在prog1和prog2中使用此.so文件,prog1和prog2如何具有全局变量的不同副本?
如果.so文件还需要使用全局变量,它如何使用prog1和prog2的不同副本?

全局变量是变量的单个实例,在每个执行进程(程序)的本地可寻址内存中全局可访问


如果同一程序有多个实例在执行,或者这些程序共享一个公共库,那么它们仍然有自己的本地内存,其中包含一个全局变量区域。因此,每个程序都有自己的全局变量,这些变量不与其他进程共享。因此,程序之间没有冲突。

但是,通过某些属性,可以为使用库的所有程序定义一个只存在一次的变量。但这是一个特例,在源代码中清晰可见。