我在共享库(libshared.so)中有一个全局变量。该库由多个进程访问,并且进程正在访问库中存在的全局变量。 我面临的问题是,一个进程对全局变量(存在于共享库中)的更新不会反映到其他独立进程访问的变量中。
我在网上搜索了这个问题,但是没有任何合适的方法来解决这个问题。我也知道只有文本/代码段被共享,每个进程都获得了数据段的本地副本。
请建议实现此要求的解决方案。我想更新共享库中的全局变量。
Enviornment:-Linux,ARM
由于 阿米特库马尔
答案 0 :(得分:1)
如果多个进程使用相同的共享库,则它们会映射相同的代码段,但每个进程都会获得自己的可写数据段副本。因此,这里的“全局”在一个进程及其地址空间的上下文中仅表示全局。
考虑一下:任何其他实现都会要求desaster,例如:标准C库中的errno
是“全局的”,你肯定不想在这里读取随机其他进程产生的错误。
如果这是您自己的库并且您确实需要在进程之间共享数据,请查看共享内存(例如,在Linux shmget()等)。