Linux 共享内存:什么&x27;钥匙和身份证的区别是什么?
调用Linux 共享内存:什么&x27;钥匙和身份证的区别是什么?,linux,ipc,shared-memory,Linux,Ipc,Shared Memory,调用ipcs-a时,key列和id列之间有什么区别 以下是ipcs命令的输出示例: ipcs -a ------ Shared Memory Segments -------- key shmid owner perms bytes nattch status 0x00000000 0 ybaumes 600 393216 2 dest 0
ipcs-a
时,key
列和id
列之间有什么区别
以下是ipcs
命令的输出示例:
ipcs -a
------ Shared Memory Segments --------
key shmid owner perms bytes nattch status
0x00000000 0 ybaumes 600 393216 2 dest
0x00000000 65537 ybaumes 700 8124648 2 dest
0x00000000 3932163 ybaumes 700 169376 2 dest
0x00000000 3604485 ybaumes 600 393216 2 dest
请参阅shmget(2)的文档。密钥为IPC_PRIVATE或创建时为0。shmid是为该特定shm段返回的值,以便其他进程或系统调用可以引用该段。首先,共享内存中的“id”列引用共享内存区域的特定处理程序。如果未获得共享内存区域,它将返回负值。所以基本上,“id”是由系统生成的,用户对它没有任何控制权 而ipcs命令中的“key”列是指在引用进程间通信资源(如共享内存、消息队列和信号量)时给出的值一个键只是一个key\u t'类型的整数。此外,关键参数是与信号量ID关联的访问值。它可以是简单的整数,例如34562,可以在使用关联的get函数创建这些资源时传递。 需要密钥的地方接受一个特殊参数IPC_PRIVATE。在这种情况下,系统将生成一个唯一的密钥,并保证没有其他进程具有相同的密钥 如果在需要密钥的位置使用IPC_PRIVATE请求资源,则该进程将收到该资源的唯一密钥。由于该资源由外部未知的唯一密钥标识,因此其他进程将无法共享该资源,因此,请求进程将被保证以独占方式拥有和访问该资源 这个概念在消息队列中使用时会更加清晰,在消息队列中,生成并发送带有特定键值的消息。只有在接收端匹配给定密钥时,才能在接收端接收相同的消息。因为返回值也给出了消息id,该id是根据相应的键值计算的,所以主要的相关性是用于检查资源的唯一性