Linux
发布时间:2022-04-01 发布网站:大佬教程 code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何在Linux中使用共享库的同一进程的实例之间共享共享库(.so)中的全局变量?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
概述
我有一个共享库(.so),我在执行应用程序之前预先加载,我在共享库中有一些应用程序使用的全局数据结构.应用程序可以使用fork()创建其他进程,这些进程可以更新共享库中的全局数据结构.我希望在所有流程中保持对这些全局数据结构的一致看法.有什么方法可以在 Linux中实现这一点吗? 我已经尝试使用shm_ *调用和mmap()将共享库的全局数据映射到共享段,但它不起作用. 最明确的说法是:你不能完全
我有一个共享库(
.so),我在执行应用程序之前预先加载,我在共享库中有一些应用程序使用的全局数据结构.应用程序可以使用
fork()创建其他进程,这些进程可以更新共享库中的全局数据结构.我希望在所有流程中保持对这些全局数据结构的一致看法.有什么
方法可以在
Linux中实现这一点吗?
我已经尝试使用shm_ *调用和mmap()将共享库的全局数据映射到共享段,但它不起作用.
最明确的说法是:你不能完全按照
你的要求做. Linux
不支持共享
链接器列出的
全局变量.该内存将处于不
可共享的映射到交换空间.
我可以提供的一般食谱是这样的:
>定义一个用于布置数据的结构.没有指针!只是抵消.
>第一个进程在/ tmp中创建一个文件,根据需要设置访问权限.使用MAP_SHARED打开,mmap.
>后续进程也会打开,带有MAP_SHARED的mmap.
>每个人都使用结构来查找他们引用,读取或写入的部分.
>注意并发!
如果你真的只关心父母和它的分叉孩子,你可以使用匿名映射而不打扰文件,你可以将映射的位置存储在全局(可以在子节点中读取).
大佬总结
以上是大佬教程为你收集整理的如何在Linux中使用共享库的同一进程的实例之间共享共享库(.so)中的全局变量?全部内容,希望文章能够帮你解决如何在Linux中使用共享库的同一进程的实例之间共享共享库(.so)中的全局变量?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。