更新多个进程使用的共享库中的全局变量

时间:2017-05-12 08:51:38

标签: c shared-libraries

我在共享库(libshared.so)中有一个全局变量。该库由多个进程访问,并且进程正在访问库中存在的全局变量。 我面临的问题是,一个进程对全局变量(存在于共享库中)的更新不会反映到其他独立进程访问的变量中。

我在网上搜索了这个问题,但是没有任何合适的方法来解决这个问题。我也知道只有文本/代码段被共享,每个进程都获得了数据段的本地副本。

请建议实现此要求的解决方案。我想更新共享库中的全局变量。

Enviornment:-Linux,ARM

由于 阿米特库马尔

1 个答案:

答案 0 :(得分:1)

如果多个进程使用相同的共享库,则它们会映射相同的代码段,但每个进程都会获得自己的可写数据段副本。因此,这里的“全局”在一个进程及其地址空间的上下文中仅表示全局。

考虑一下:任何其他实现都会要求desaster,例如:标准C库中的errno是“全局的”,你肯定不想在这里读取随机其他进程产生的错误。

如果这是您自己的库并且您确实需要在进程之间共享数据,请查看共享内存(例如,在Linux shmget()等)。

相关问题