gpt4 book ai didi

c - IPC key 从 st_dev 中选择 8 位,从 st_ino 中选择 16 位

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:22:57 26 4
gpt4 key购买 nike

这是来自 UNP Richard Stevens 的代码副本

   #include "apue.h"                                                                                
#include <sys/ipc.h>
int main(int argc,char * argv[])
{
struct stat stat_buf;
if(argc != 2)
err_quit("usage ftock <pathname>");
stat(argv[1],&stat_buf);
printf("st_dev :%08lx, st_info : %08lx ,key :%08x\n",(unsigned long)stat_buf.st_dev,(unsigned long)stat_buf.st_ino,ftok(argv[1],0x57));
}

输出:

st_dev :00000803, st_ino : 018e17c3 ,key :570317c3

因此 key 从 id 中获取 8 位,从 st_dev 中获取 8 位,从 st_ino 中获取 16 位。

我使用的是 SUSE gcc。

我知道这本书有点旧。新工具有新方法。

谁能告诉我ftok的工作原理?从 st_ino 中选择更多位的原因是什么?

最佳答案

每个 inode 对于设备上的每个文件都是不同的。每个设备号对于每个设备(分区)都是唯一的。由于每个设备的文件通常比每个系统的设备多得多,因此从 st_ino 使用比从 st_dev 更多的位是有意义的,如果你想减少的机会碰撞。

不幸的是,由于 ftok 不保证唯一性,任何使用它的应用程序无论如何都必须能够容忍冲突。据我所知,这或多或少使它变得毫无用处。

关于c - IPC key 从 st_dev 中选择 8 位,从 st_ino 中选择 16 位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18370257/

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