如何将字符串转换为key_t
,以便通过shmget
将其用于创建共享内存段?
这是因为用于映射共享内存的密钥正在通过TCP / IP传输。
提前致谢!
最佳答案
密钥是通过调用ftok()
创建的。后者使用文件路径和8bit值来执行此操作。
对于相同的文件路径和相同的8位值,ftok()
(重新)创建相同的密钥。
因此,传输文件路径和8位值(通常是另一个char
),并让接收者对接收到的值调用ftok()
。这将创建与发送方相同的密钥。
从ftok()
's documentation:
ftok()函数使用由给定路径名(必须引用现有的可访问文件)命名的文件的身份以及proj_id的最低有效8位(必须为非零)
生成适用于msgget(2),semget(2)或shmget(2)的key_t类型的系统V IPC密钥。
当使用相同的proj_id值时,对于命名相同文件的所有路径名,结果值均相同。当(同时存在)文件或
项目ID不同。