编写一个基于mqueue的C语言例程
时间: 2024-03-09 20:51:42 浏览: 165
C# MessageQueue示例
4星 · 用户满意度95%
好的,下面是一个基于mqueue的简单C语言例程:
```c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/stat.h>
#include <mqueue.h>
#define MQ_NAME "/my_mq"
#define MQ_MESSAGESIZE 256
#define MQ_MAXMESSAGES 10
int main(void) {
mqd_t mq;
char buffer[MQ_MESSAGESIZE];
struct mq_attr attr;
// 初始化消息队列的属性
attr.mq_flags = 0;
attr.mq_maxmsg = MQ_MAXMESSAGES;
attr.mq_msgsize = MQ_MESSAGESIZE;
attr.mq_curmsgs = 0;
// 创建消息队列
mq = mq_open(MQ_NAME, O_CREAT | O_RDWR, 0664, &attr);
if (mq == (mqd_t)-1) {
perror("mq_open");
exit(EXIT_FAILURE);
}
// 发送消息到队列中
if (mq_send(mq, "Hello, World!", MQ_MESSAGESIZE, 0) == -1) {
perror("mq_send");
exit(EXIT_FAILURE);
}
// 从队列中接收消息并打印出来
if (mq_receive(mq, buffer, MQ_MESSAGESIZE, NULL) == -1) {
perror("mq_receive");
exit(EXIT_FAILURE);
}
printf("Received message: %s\n", buffer);
// 关闭并删除消息队列
mq_close(mq);
mq_unlink(MQ_NAME);
return 0;
}
```
该程序演示了如何创建一个基于mqueue的消息队列,并且向队列中发送一条消息,然后从队列中接收该消息并打印出来。注意,在使用mqueue前,需要先include `mqueue.h`头文件,并且在编译时需要链接`-lrt`库。
阅读全文