永发信息网

有关Linux的share memory的问题

答案:1  悬赏:60  手机版
解决时间 2021-02-02 18:36
  • 提问者网友:酱爆肉
  • 2021-02-02 12:13
shmat函数的第二个参数为空的时候返回的地址值是实际内存的位置么?如果第二个参数为某一个void*类型的地址值时,shmat返回的就是这个地址值,那么这个地址值是由实际的virtual memory所map出来的地址值么?这样有什么好处?
最佳答案
  • 五星知识达人网友:冷風如刀
  • 2021-02-02 13:26
在任何成功的情况下, shmat 返回的是将 shared memory 所 attach 到的地址。

如果 第二个参数为 NULL, 则由系统选择一个空闲的地址来 attach, 如果第二个参数不为空,则 attach 到这个指定的地址。好处就是此时你可以指定具体要 attach 到哪个地址 (比如 0x12345678),而第一种方法事先你无法知道被 attach 的地址是什么。

另外,在linux里,user space 的进程永远不可能看到 “实际内存”的位置,所以不管第二个参数是否为 NULL,你看到的永远不是 “实际内存”位置。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯