如何以保证的方式将虚拟地址传递给shmat()函数

我使用虚拟地址使用shmat()。 第一个进程使用shmaddr将shmat调用为null,当它获取数据块的虚拟地址时,它将存储在另一个共享的记忆位置。 第二个进程使用第一个进程存储在共享内存中的virtaul地址调用shmat()。 在大多数情况下,第二个进程通常可以连接到同一个虚拟地址,但在一种情况下我不能和shmat返回-1,当我使用gdb时,我看到地址是一个坏地址。
(gdb) x 0x800852000
0x800852000:    Error accessing memory address 0x800852000: Bad address.
所以我的问题是我如何保证第一次获得虚拟地址 流程可以看到?     
已邀请:
如果您正在设置虚拟地址,如果将其强制为不太可能正常使用的值,则会更好。你很可能得到了糟糕的地址,因为在你有机会附加之前,图书馆或其他东西已经接管了。我们有类似的情况,我们强制我们的地址为0x0000005000000000(对于64位系统):
void *stuff = shmat(shmid, 0x0000005000000000, SHM_RDONLY);
    

要回复问题请先登录注册