asc*_*99c 8 c linux shared-memory ftok
我ftok()用来为C应用程序使用的共享内存段生成标识符.我遇到了问题,在一个盒子上我遇到了root使用的标识符.我可以通过破解代码在这个例子中修复它,但我想要一个更强大的解决方案.
应用程序安装在自己的逻辑卷中,提供给ftok的路径是应用程序的二进制目录(在该lv中).提供的ID从1开始,通常有6个左右.
我已经追踪到ftok会做这样的事情:
(id & 0xff) << 24 | (st.st_dev & 0xff) << 16 | (st.st_ino & 0xffff)
Run Code Online (Sandbox Code Playgroud)
st.st_dev/st.st_ino的组合应该是非常独特的.但是我已经看过很多方框,st_dev的最低位通常是0(即st_dev数字通常是256的倍数).并且由于二进制目录位于逻辑卷中,因此无法保证inode编号与root用户不同.
有没有一个很好的方法 - 一个更好的替代ftok,或一种设置机器,使得st_dev数字将更有用于ftok?
| 归档时间: |
|
| 查看次数: |
2304 次 |
| 最近记录: |