2017-05-12 38 views
0

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

我在网上搜索了关于这个问题,但没有得到任何合适的方式来纠正这一点。我也知道只有文本/代码段是共享的,每个进程获取数据段的本地副本。

请建议一个解决方案来实现这个需求。我想更新共享库中的全局变量。

Enviornment:-Linux,ARM

感谢 阿米特库马尔

回答

1

如果多个进程使用同一个共享库,他们得到了相同的代码段映射,但每个进程都有自己的可写数据段的拷贝。因此,这里的“全球”意味着在一个过程和地址空间的背景下,只有全球性。

想一想:任何其他的实现都会要求desaster,例如,标准C库中的errno是“全局”,您绝对不希望读取由此处的随机其他进程产生的错误。

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

相关问题