linux posix消息队列例程
时间: 2023-05-24 18:06:01 浏览: 156
unix编程——posix消息队列.docx
下面是一个简单的Linux POSIX消息队列的例程,包括创建、发送、接收和删除消息队列。
```c++
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <fcntl.h>
#include <mqueue.h>
#include <errno.h>
#define MSG_SIZE 1024
#define QUEUE_NAME "/my_queue"
int main(int argc, char *argv[]) {
mqd_t mq; // 消息队列描述符
char buffer[MSG_SIZE]; // 消息缓冲区
unsigned int prio; // 消息优先级
/* 创建消息队列并打开 */
mq = mq_open(QUEUE_NAME, O_CREAT | O_RDWR, 0666, NULL);
if (mq == (mqd_t) -1) {
perror("mq_open");
exit(1);
}
/* 发送消息 */
strncpy(buffer, "hello, world!", MSG_SIZE);
prio = 10;
if (mq_send(mq, buffer, strlen(buffer) + 1, prio) == -1) {
perror("mq_send");
exit(1);
}
/* 接收消息 */
if (mq_receive(mq, buffer, MSG_SIZE, &prio) == -1) {
perror("mq_receive");
exit(1);
}
printf("Received message: %s (prio: %u)\n", buffer, prio);
/* 删除消息队列 */
if (mq_unlink(QUEUE_NAME) == -1) {
perror("mq_unlink");
exit(1);
}
return 0;
}
```
运行该程序会创建一个名为 "/my\_queue" 的消息队列并发送一条消息 "hello, world!",接着再接收该消息并打印出来,最后删除该消息队列。需要注意的是,该程序并不是一个完整的例程,更多使用方式和 API 可以查看 Linux 的 mq\_open、mq\_send、mq\_receive 和 mq\_unlink 文档。
阅读全文