免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2020 | 回复: 6
打印 上一主题 下一主题

[Linux] 新手问题--某个进程的堆,其他进程能访问码? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-11-28 10:41 |只看该作者 |倒序浏览

     在共享内存中分配了一个hash表,每个槽位中方一个 链表的头指针,一个进程在堆上创建了一个节点,然后插入到某个槽位的链表头中,对于其他进程是能用获得链表的头指针的但是能不能访问到刚插入的节点呢

论坛徽章:
1
天蝎座
日期:2013-12-06 18:23:58
2 [报告]
发表于 2012-11-28 16:43 |只看该作者
既然都能获取到头指针了,也很有可能会访问到这个节点啊

论坛徽章:
0
3 [报告]
发表于 2012-11-29 17:27 |只看该作者
应该是不能的。

论坛徽章:
0
4 [报告]
发表于 2012-11-29 18:09 |只看该作者
回复 3# whaaat


    恩 节点也需要用共享内存,谢谢

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
5 [报告]
发表于 2012-11-29 21:36 |只看该作者
共享内存里只能用偏移量替代指针.

论坛徽章:
0
6 [报告]
发表于 2012-11-30 10:54 |只看该作者
windows: 一个进程开辟的空间当然不能被别的进程访问了,操作系统有保护的,不然进程可以访问别的进程里的数据,不就进程不安全了。
unix环境应该也是同理吧。进程和进程之间数据是独立的。保证一个进程的异常访问导致别的进程崩溃。

论坛徽章:
0
7 [报告]
发表于 2012-11-30 15:47 |只看该作者
个人看法:
1,既然是使用了共享内存,那么就可以进行进程间通信了,A进程在共享内存中创建的hash表以及表中的元素是能够被同样可以使用这块共享内存的进程BCD...所访问。
2,该hash表中的某个元素在A进程中的地址不能直接被BCD...等进程所直接使用。因为各个进程的线性地址空间是独立的,A中的地址0x...所映射的物理地址与该地址在进程B中所映射的物理地址是不同的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP