gpt4 book ai didi

c - 用于生成 ftok() key 的公式是什么?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:43:46 27 4
gpt4 key购买 nike

用于生成 ftok() 生成的 key 的公式是什么? ftok 是一个 Linux 函数,用于为 SYSTEM V IPC 创建 key 。

最佳答案

ftok from glibc 2.29 :

key_t
ftok (const char *pathname, int proj_id)
{
struct stat64 st;
key_t key;

if (__xstat64 (_STAT_VER, pathname, &st) < 0)
return (key_t) -1;

key = ((st.st_ino & 0xffff) | ((st.st_dev & 0xff) << 16)
| ((proj_id & 0xff) << 24));

return key;
}

即它通过从 proj_id 的低 8 位中取出高 8 位,从设备号的低 8 位中取出第二个高 8 位来创建一个 32 位的 key_t提供的 pathname,以及提供的 pathname 的 inode 号的低 16 位中的低 16 位。

musl libc使用相同的算法:

key_t ftok(const char *path, int id)
{
struct stat st;
if (stat(path, &st) < 0) return -1;

return ((st.st_ino & 0xffff) | ((st.st_dev & 0xff) << 16) | ((id & 0xffu) << 24));
}

关于c - 用于生成 ftok() key 的公式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54492824/

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