是否可以创建可由32位和64位进程访问的共享内存段。支持64位寻址的标志'TPF_IPC64'如下所示
shmget(key,100,IPC_CREAT|TPF_IPC64);
是否可以从32位Linux进程访问它?
编辑:看起来普通的Linux操作系统调用shmget不支持标志'TPF_IPC64'。我认为这是IBM专有的(我的坏)。我从这个链接中获取了它
答案 0 :(得分:3)
man shmget(2)
如果在shmflg中设置了IPC_CREAT,则可以创建共享内存段 仅由相同可执行类型的进程共享。那是一个 编译为32位进程的应用程序将能够共享 与其他32位进程和应用程序相同的内存段 编译为64位进程将能够共享相同的内存 与其他64位进程分段。如果是64位进程想要的话 创建一个共享内存段,也可以与32位共享 在进程中,64位进程必须另外指定IPC_SHARE32 shmflg中的IPC_CREAT。 32位进程不需要指定 IPC_SHARE32。基于Itanium(R)的平台,如果是自适应地址 正在使用空间功能,然后可能会应用其他规则。见 关于自适应地址空间的以下部分。
答案 1 :(得分:0)
来自IBM's文件
TPF_IPC64
Specifies that 64-bit addressing is supported. If you specify this flag, 64-bit system heap is used to satisfy the request if there is enough heap available. If there is no 64-bit system heap space available, 31-bit system heap will be used. Specify this flag only if all the users of this shared memory area can support 64-bit addresses.
最后一句话提到所有进程都必须支持64位地址。因此,使用32位地址的进程无法访问它。
但是,如果您尝试使用32位进程访问它,我不会采取什么行为。