我正在使用ftok()创建共享存储密钥。我想创建500个共享存储密钥。按照ftok()的手册页,提到低阶8位很重要。

这是否意味着我们最多只能生成256个共享内存密钥?
如果是,那么如何生成超过256个密钥?

因为在参数ftok()中定义为采用proj_id的int参数:-

key_t ftok(const char *pathname, int proj_id);

因此它应该生成2^02^31具有相同路径名的唯一键。

最佳答案

ftok可以创建的最大键数不受ftok的整数参数限制。它也取决于整数参数和路径参数。即使int参数的低8位有效,理论上路径的数量也是无数的。
ftok返回的密钥的类型为key_t,即__S32_TYPE,这是一个int。因此,这可以取自2^0 to 2^31具有4个字节的实现方式。

按照ftok的手册页:



但是,正如其他人在评论中指出的那样,建议创建这么多流程是不明智的。

07-28 03:11