我正在使用ftok()为C应用程序使用的共享内存段生成标识符。我有问题,在一个盒子上我与root使用的标识符发生冲突。在这种情况下,我可以通过破解代码来修复它,但我想要一个更强大的解决方案。应用程序安装到它自己的逻辑卷中,提供给ftok的路径是应用程序的二进制文件目录(在该lv内)。提供的ID从1开始,通常有六个左右。我已经查到ftok会做这样的事情:(id&0xff)st.st_dev/st.st_ino的组合应该是非常独特的。但我在许多盒子中看到,st_dev的最低有效位通常为0(即st_dev数字通常是256的倍数)。并且因为二进制目录位于逻辑卷中,所以无法保证inode编号与r
我正在使用ftok()为C应用程序使用的共享内存段生成标识符。我有问题,在一个盒子上我与root使用的标识符发生冲突。在这种情况下,我可以通过破解代码来修复它,但我想要一个更强大的解决方案。应用程序安装到它自己的逻辑卷中,提供给ftok的路径是应用程序的二进制文件目录(在该lv内)。提供的ID从1开始,通常有六个左右。我已经查到ftok会做这样的事情:(id&0xff)st.st_dev/st.st_ino的组合应该是非常独特的。但我在许多盒子中看到,st_dev的最低有效位通常为0(即st_dev数字通常是256的倍数)。并且因为二进制目录位于逻辑卷中,所以无法保证inode编号与r
在ftok()手册中有提到key_tftok(constchar*pathname,intproj_id);ftok()函数使用由给定路径名命名的文件的标识(必须引用现有的可访问文件)...我对constchar*pathname感到困惑。它的最佳实践是什么?在我当前的系统上,我可以传递"/home/Andrew/anyfile"但我的程序必须在其上运行的其他系统不可能有这个文件。我使用"/etc/hosts/"或"/etc/inittab"怎么样,因为我确信所有此类系统都会有这两个文件?这是个好主意吗?它会引起任何问题吗?我不想要求用户在执行时输入文件名或将文件名作为命令行参数传递。
在ftok()手册中有提到key_tftok(constchar*pathname,intproj_id);ftok()函数使用由给定路径名命名的文件的标识(必须引用现有的可访问文件)...我对constchar*pathname感到困惑。它的最佳实践是什么?在我当前的系统上,我可以传递"/home/Andrew/anyfile"但我的程序必须在其上运行的其他系统不可能有这个文件。我使用"/etc/hosts/"或"/etc/inittab"怎么样,因为我确信所有此类系统都会有这两个文件?这是个好主意吗?它会引起任何问题吗?我不想要求用户在执行时输入文件名或将文件名作为命令行参数传递。