linux - ftok() 中的这个 "project identifier"是什么?

第二个参数proj_id。这是什么?

#include <sys/types.h>
#include <sys/ipc.h>
key_t ftok (const char *pathname, int proj_id);

最佳答案

关于 ftok 的实现,有一个基于 key 和标识符的数据结构(其中附加了您提供的路径中的文件 inode 和与之关联的唯一 ID)。

因此,您可以为 proj_id 使用任何 int 值,以便在使用相同的 proj_id 引用时,与其关联的返回值将是通用的。

我通过更改 proj_id 并使用相同的文件然后更改回相同的 proj_id (n-1) 来测试它。我的实验成功了。在具有相同 proj_id 的情况下,我只能通过传递的 ftok key_id 分配 1 个信号量。但是当我更改 proj_id 并发送相同的文件路径时,我能够获得新的信号量。 (记得使用 nano 进行 chaning,因为 vim 在使用 :wq 选项时会更改文件的 inode 编号)。

供引用: https://pubs.opengroup.org/onlinepubs/9699969699/functions/ftok.html

关于linux - ftok() 中的这个 "project identifier"是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58172088/

相关文章:

swift - ios 13.1 无法将文件保存到应用程序目录

python - 如何使用 matplotlib.errorbar 更改单个标记的颜色?

python - 如何在没有数据库的情况下使用 JWTTokenUserAuthentication

netlogo - 如何使用 Netlogo 中的行为空间获取海龟到达不同 10 个补丁的滴答时间?

c# - 程序集绑定(bind)重定向 : How and Why?

reactjs - 错误 : [mobx] Computed values are not allo

exception - Flutter:应用程序崩溃并出现运行时异常 - 回复已提交

google-apps-script - 如何使用 google sheet api v 4 将 b

python - 使用 Python 类型模块指定序列或列表的长度

email - MailApp.sendEmail 所有邮件被阻止