gpt4 book ai didi

c - system v IPC 中的 "key"是什么东西?

转载 作者:太空狗 更新时间:2023-10-29 12:41:49 26 4
gpt4 key购买 nike

在系统V消息队列中,我们使用 msgget() 系统调用

获取消息队列标识符
int msqid = msgget(key, 0666 | IPC_CREAT);

如果 msqid 是唯一的队列标识符,那么关键是什么?不也是一个唯一的队列标识吗?

手册页上说的就是这个

The msgget() system call returns the System V message queue identifier associated with the value of the key argument

没有解释那个键到底是什么。它是某种哈希表的键,其值是一堆 IPC 工具吗?我读过 this发布,但它仍然是泥泞的。

此外,人们通常使用 ftok() 来生成 key 。

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

The ftok() function uses the identity of the file named by the given pathname (which must refer to an existing, accessible file) and the least significant 8 bits of proj_id (which must be nonzero) to generate a key_t type System V IPC key

为什么会有人想要通过散列文件的 inode 来生成唯一编号?我个人认为所有进程同意一个公共(public)编号比所有进程同意一个公共(public)文件更容易实现。是否仅用于统一分发目的 this回答状态?

最佳答案

因为冲突,既不同意固定数量也不同意固定文件是不切实际的。键的命名空间很小并且是系统全局的。在实践中,您必须随机生成 key (如果 key 已经存在,则使用新的随机值重试)并通过另一个 channel 传送 key (例如将其存储在文件中或在命令行或某种消息中传递)。

关于c - system v IPC 中的 "key"是什么东西?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40251452/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com