linux进程间通信,ftok是如何计算键值的

本文通过一个C程序示例解释了ftok函数如何结合文件路径、项目ID(proj_id)以及文件的设备号和inode来生成键值。ftok函数的输出是项目ID的低8位与文件设备号和inode号的特定组合,这些值在十六进制下进行运算。程序中展示了如何使用stat函数获取文件的设备号和inode号,并将它们与ftok生成的键值进行比较。
摘要由CSDN通过智能技术生成

ftok函数原型:key_t ftok(const char *pathname, int proj_id)

键值=ftok函数的第二个参数在十六进制形式表示下的低8位bit(注意这里是bit)所表示的值+ftok函数的第一个参数即指定文件的设备号(以十六进制表示)的低2位值+指定文件的inode号(以十六进制表示)的低4位值

    int main(){
    //获取键值,这里为了方便,直接将第二个 
    //参数赋成十六进制
    key_t 
    key=ftok("my_test",0x12345678);
    
    //正常打印键值
    printf("%d\n",key);//2013357355
    //将键值以十六进制的形式打印
    printf("%x\n",key);//7801652b
   
    //用stat函数获取指定文件的文件信息
    struct stat my_stat;
    stat("my_test",&my_stat);
   
    //找到文件信息中的设备号st_dev,并将 
    //其以十六进制的形式打印
    printf("dev:%lx\n",my_stat.st_dev);//dev:801
    //找到文件信息中的inode号st_ino,并 
    //将其以十六进制的形式打印
    printf("ino:%lx\n",my_stat.st_ino);//ino:1c652b
    
    return 0;
    }

如上7801652b=78+01+652b

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值