这是来自 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
所以密钥取 8 位来自id
8 位来自st_dev
16 位来自st_ino
。
我使用 SUSE gcc 。
我知道这本书有点旧了。新工具有其新方法。
谁能告诉我 ftok
工作原理?选择更多位的原因是st_ino
什么?