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

31 lines
1.0 KiB
C
Raw Normal View History

2023-08-18 16:47:04 +08:00
#include <stdio.h>
#include <sys/types.h> // 系统数据类型定义
#include <sys/ipc.h> // IPC相关头文件
#include <sys/msg.h> // 消息队列相关头文件
// msgget 函数用于创建消息队列参数1是键值参数2是权限
int main()
{
key_t key = ftok("/home/flykhan/", 200); // 获取消息队列的键值
printf("key = %d\n", key);
if (key == -1)
{
perror("ftok");
return 1;
}
// msgget 函数用于创建消息队列参数1是键值参数2是权限
// 返回值是消息队列的标识符,类似于文件描述符
// IPC_CREAT 表示如果消息队列不存在则创建,如果存在则打开
// 0644 表示权限,类似于文件权限,表示所有者可读写,其他人只读
int msgqid = msgget(key, IPC_CREAT | 0666); // 创建消息队列
if (msgqid == -1)
{
perror("msgget");
return 1;
}
// msgqid 只要不是 -1 就表示创建成功
printf("msgqid = %d\n", msgqid); // 打印消息队列标识符
return 0;
}