BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #47503同步于 2010/12/9
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

求助一个多个c程序同时运行的问题

gbsh
2010/12/9镜像同步14 回复
请问可不可以实现两个C程序访问同一个变量,一个程序改变变量后,另一个程序可以访问改变后的变量?如何实现? 这里是两个程序,两个主函数。 谢谢
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
kobe6672823机器人#1 · 2010/12/9
用文件实现? 你要改变的那个变量改变后放到文件里,然后另外一个文件访问那个文件就行了,可是这个方法的同步互斥是个问题,还是用进程好弄点吧
gbsh机器人#2 · 2010/12/9
【 在 kobe6672823 的大作中提到: 】 : 用文件实现? : 你要改变的那个变量改变后放到文件里,然后另外一个文件访问那个文件就行了,可是这个方法的同步互斥是个问题,还是用进程好弄点吧 : -- : ................... 你好,问下用进程怎么弄?能不能加你QQ?
purevirtual机器人#3 · 2010/12/9
共享内存 【 在 gbsh (gbsh) 的大作中提到: 】 : 请问可不可以实现两个C程序访问同一个变量,一个程序改变变量后,另一个程序可以访问改变后的变量?如何实现? 这里是两个程序,两个主函数。 谢谢
wapsearch机器人#4 · 2010/12/10
共享内存,管道
guo机器人#5 · 2010/12/10
google IPC
gbsh机器人#6 · 2010/12/10
我试着采用的方法是用mmap函数映射同一个普通文件实现共享内存。 我创建一个结构体如下: struct ctl_array{ struct switch_ switches[MAX_SWITCHES]; int n_switches; }; 在第一个进程中,先打开普通文件,然后用mmap函数映射到这个进程的一个地址空间,令函数返回ctl_array类型指针p_map(想在共享内存中保存一个ctl_array对象),通过操作这个指针将一个ctl_array对象保存到共享内存中。 通过查看p_map->n_switches和p_map->switches[]数组知道已经保存成功。 启动第二个程序,同样打开同一个普通文件,然后用mmap函数映射到这个进程的地址空间,令函数返回ctl_array类型指针p_map,操作这个指针查看p_map->n_switches是正确的,但是在试图操作p_map->switches[]数组中的元素时,出现段错误的问题。本来刚开始在第一个进程中写共享内存时出现段错误和总线错误,但都解决了,为什么第二个进程直接读共享内存会出现段错误呢??望牛人回复。
a206206机器人#7 · 2010/12/10
【 在 gbsh 的大作中提到: 】 : 我试着采用的方法是用mmap函数映射同一个普通文件实现共享内存。 : 我创建一个结构体如下: : struct ctl_array{ : ................... pipe,memory-mapped file什么的多好用啊,干吗非要自己写
wks机器人#8 · 2010/12/10
弱弱地问问,那为什么设计成两个程序而不是一个程序呢?为什么不是三个程序呢?
gbsh机器人#9 · 2010/12/10
【 在 wks 的大作中提到: 】 : 弱弱地问问,那为什么设计成两个程序而不是一个程序呢?为什么不是三个程序呢? : -- 当时感觉写在一个程序里面不太好实现想要的功能,所以弄了两个(原来也是两个进程,只是没有进程间的通信,我想修改)。 我现在考虑这个段错误的原因是共享内存中的结构体中有定义指针,第一个进程给指针赋值为第一个进程的虚拟地址空间,而这个地址在第二个进程中是不能用的,所以当操作这个指针时就出现了段错误。所以我想确认下,是不是共享内存不能共享指针?如果是的话,只能放弃让这两个进程通信的想法了。