繁体   English   中英

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

[英]Updating a global variable in shared library used by more than one process

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

我在网上搜索有关此问题的信息,但没有任何合适的方法来纠正此问题。我也知道只有文本/代码段可以共享,每个进程都可以获取数据段的本地副本。

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

环境:-Linux,ARM

谢谢阿米特·库马尔

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

仔细想想:任何其他实现都将导致灾难,例如,标准C库中的errno是“全局”的,并且您绝对不想在这里读取由随机的其他进程产生的错误。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM