如何将字符串转换为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不同。

07-24 09:20