因此,当我运行$ ipcs时,shared memory segment部分返回各种结果:
------ Shared Memory Segments --------
key shmid owner perms bytes nattch status
0x00000000 524288 jvn 600 524288 2 dest
0x00000000 1048577 jvn 600 524288 2 dest
0x00000000 1769474 jvn 600 393216 2 dest
0x00000000 753667 jvn 600 524288 2 dest
0x00000000 1146884 jvn 600 16777216 2 0x00000000值存在于每个IPC对象中,为什么它没有不同?什么意思?
为了提供更多的上下文,TLDP声明:
要获得唯一的ID,必须使用密钥。密钥必须由客户端和服务器进程共同商定。这是为应用程序构建客户机/服务器框架的第一步。当你用电话给某人打电话时,你必须知道他们的电话号码。此外,电话公司必须知道如何将您的打出去的电话转接到其最终目的地。一旦对方以接听电话的方式作出响应,就会进行连接。在System设施的情况下,
telephone'' correllates directly with the type of object being used. The电话公司‘’或路由方法可以直接与IPC密钥相关联。通过将键值硬编码到应用程序中,密钥每次都可以是相同的值。这样做的缺点是钥匙可能已经在使用了。通常,ftok()函数用于为客户机和服务器生成键值。
发布于 2018-09-09 11:48:30
通过在线课程,从Linux基金会认证的Sysadmin内容中找到答案:
注意,当前运行的几乎所有共享内存段都有一个
0或0x00000000键(也称为IPC_PRIVATE),这意味着它们仅在父/子关系中的进程之间共享。
https://unix.stackexchange.com/questions/467746
复制相似问题