Linux共享库(动态库)与进程之间共享全局变量可行性分析
来源:互联网 发布:js清除input的value值 编辑:程序博客网 时间:2024/06/07 18:30
在主程序中可以使用动态链接库中的全局变量是正确的,不可否认的,但这需要在程序编译链接时就要把动态库加上,并在需要使用的程序中使用extern声明变量,这其实没有达到动态库的本质目的(使用时再调用);这其实不算是一个大问题,如果只在一个进程中使用也不会有问题,这里主要讨论在多进程中使用动态库全局变量的问题。
如果想在进程间依靠动态库来共享全局变量恐怕是不太可能的事情,因为不同进程访问动态库时,是写时拷贝,即如果另外一个进程试图去修改动态库中的全局变量时,系统就会把这个全局变量拷贝一份单独给这个进程,而这个修改操作并不会影响到其他进程中变量的值。
测试程序:(下载地址http://www.liuzhigong.com/download/test_linux_so.tar.gz)
测试结果:
可以看到,主进程首先修改了这个值,然后在子进程中读取到的是主进程修改后的值,但是子进程中的修改并没有影响到主进程中的使用的动态库中的全局变量。所以试图使用动态库在进程间共享全局变量的方法是行不通的。
附:编译方法
gcc -fPIC-shared testshare.c -o libtestshare.so.2.0
gcc -o main -L/main main.c libtestshare.so.2.0
gcc -o main -L/main main.c libtestshare.so.2.0
./main
- Linux共享库(动态库)与进程之间共享全局变量可行性分析
- Linux共享库(动态库)与进程之间共享全局变量可行性分析
- Linux共享库(动态库)与进程之间全局变量是无法共享的
- Linux共享库(动态库)与进程之间全局变量是无法共享的
- 动态库与主程序共享全局变量
- 动态库与主程序共享全局变量
- Linux文件共享(四)——父进程与子进程之间的文件共享
- Linux文件共享(四)——父进程与子进程之间的文件共享
- Linux文件共享(四)——父进程与子进程之间的文件共享
- Linux 进程热升级(共享库的动态替换)
- Python 进程之间共享数据(全局变量)
- Python 进程之间共享数据(全局变量)
- linux动态链接库全局变量共享问题&DLL共享数据段
- linux动态链接库全局变量共享问题&DLL共享数据段
- linux动态链接库全局变量共享问题&DLL共享数据段
- linux动态链接库全局变量共享问题&DLL共享数据段
- Windows动态库与Linux共享对象
- Windows动态库与Linux共享对象
- 普通数组的冒泡排序算法
- 让Tiled成为一个强有力的45度菱形Staggered打点器(地图编辑器)
- 常用的批量插入\更新和递归
- 面向星球的网络搜索:google集群架构
- 一对多 映射文件 范例 以 customer--order 为例子
- Linux共享库(动态库)与进程之间共享全局变量可行性分析
- LVS 虚拟服务器三种模式例子
- C语言的数据结构
- 10个带源码的充满活力的Web设计教程
- Promptumenu jQuery plugin
- NYOJ 22题 素数求和问题
- SQL字段类型
- .net MVC中如何使用iframe实现局部刷新
- C++中参数传递方式讨论