ftok()函数
系统建立IPC通讯 (消息队列、信号量和共享内存) 时必须指定一个ID值。通常情况下,该id值通过ftok函数得到。
函数原型:key_t ftok( const char * fname, int id ); (id>0)
fname就是你指定的文件名(已经存在的文件名),一般使用当前目录。
在一般的UNIX实现中,是将文件的索引节点号
取出。(文件重建将会分配一个新的索引节点号)
ftok 返回值组成:hex(id)&0xff
03 hex(节点号)&0xffff
。
传入的id低8位+0x03+ 节点号的低16位。(test on redhat )
可通过 ls -l
查看文件节点值。
Usage
#include <stdio.h>
#include <sys/ipc.h>
int main(int argc,char* argv[])
{
if(argc!=2)
{
puts("usage: keyfile\n");
return 0;
}
printf("%s\n",argv[0]);
printf("ftok=0x%x\n",ftok(argv[1],1) );
return 0;
}