qfedu-linux-advanced-level/day5/ftok1.c

25 lines
928 B
C
Raw Normal View History

2023-08-18 16:47:04 +08:00
#include <stdio.h>
#include <sys/types.h>
#include <sys/ipc.h>
// ftok()函数用于获取消息队列的键值
int main()
{
// 获取消息队列的键值返回值是一个整数表示消息队列IPC的键值
key_t key = ftok("/", 26);
printf("key = %d\n", key);
// ftok()函数的第一个参数是路径,第二个参数是索引值
// 索引值是一个整数范围是0~255用于区分不同的消息队列
// 超过255的索引值会被截断例如256会被截断为0257会被截断为1相当于循环使用
key_t key2 = ftok("/", 26);
printf("key = %d\n", key2);
int mask = 0xff; // 0b11111111 低8位掩码
printf("mask = %d\n", mask);
// 低8位掩码与key进行与运算得到低8位
printf("key & mask = %d\n", key & mask); // 用于获取低8位
printf("key2 & mask = %d\n", key2 & mask); // 用于获取低8位
return 0;
}