gpt4 book ai didi

c - ftok() 碰撞

转载 作者:IT王子 更新时间:2023-10-29 00:20:36 28 4
gpt4 key购买 nike

我正在使用 ftok() 为 C 应用程序使用的共享内存段生成标识符。我有问题,在一个盒子上我与 root 使用的标识符发生冲突。在这种情况下,我可以通过破解代码来修复它,但我想要一个更强大的解决方案。

应用程序安装到它自己的逻辑卷中,提供给 ftok 的路径是应用程序的二进制文件目录(在该 lv 内)。提供的 ID 从 1 开始,通常有六个左右。

我已经查到 ftok 会做这样的事情:

(id & 0xff) << 24 | (st.st_dev & 0xff) << 16 | (st.st_ino & 0xffff)

st.st_dev/st.st_ino 的组合应该是非常独特的。但我在许多盒子中看到,st_dev 的最低有效位通常为 0(即 st_dev 数字通常是 256 的倍数)。并且因为二进制目录位于逻辑卷中,所以无法保证 inode 编号与 root 用户使用的不同。

是否有解决此问题的好方法 - 更好的 ftok 替代方法,或者设置机器的方法以使 st_dev 数字对 ftok 更有用?

最佳答案

您可能需要考虑使用 POSIX 共享内存(通过 shm_open ),它不会遭受此类键冲突

关于c - ftok() 碰撞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7333013/

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