31 lines
1.0 KiB
C
31 lines
1.0 KiB
C
|
#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;
|
|||
|
}
|