我正在使用ftok()
创建共享存储密钥。我想创建500个共享存储密钥。按照ftok()
的手册页,提到低阶8位很重要。
这是否意味着我们最多只能生成256个共享内存密钥?
如果是,那么如何生成超过256个密钥?
因为在参数ftok()
中定义为采用proj_id
的int参数:-
key_t ftok(const char *pathname, int proj_id);
因此它应该生成
2^0
到2^31
具有相同路径名的唯一键。 最佳答案
ftok
可以创建的最大键数不受ftok
的整数参数限制。它也取决于整数参数和路径参数。即使int
参数的低8位有效,理论上路径的数量也是无数的。ftok
返回的密钥的类型为key_t
,即__S32_TYPE
,这是一个int
。因此,这可以取自2^0 to 2^31
具有4个字节的实现方式。
按照ftok的手册页:
但是,正如其他人在评论中指出的那样,建议创建这么多流程是不明智的。