linux 消息队列msg例程
时间: 2023-10-15 22:18:33 浏览: 205
linux 消息队列使用示例
下面是一个简单的 Linux 消息队列 msg 的例程:
```c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <fcntl.h>
#include <sys/stat.h>
#include <mqueue.h>
#define MSG_QUEUE_NAME "/my_msg_queue"
int main(int argc, char **argv)
{
mqd_t mq;
char buffer[1024];
struct mq_attr attr;
int prio;
// 设置消息队列属性
attr.mq_flags = 0;
attr.mq_maxmsg = 10;
attr.mq_msgsize = 1024;
attr.mq_curmsgs = 0;
// 创建消息队列
mq = mq_open(MSG_QUEUE_NAME, O_CREAT | O_RDWR, 0666, &attr);
if (mq == (mqd_t)-1) {
perror("mq_open");
exit(1);
}
// 发送消息
sprintf(buffer, "Hello, world!");
if (mq_send(mq, buffer, strlen(buffer) + 1, 0) == -1) {
perror("mq_send");
exit(1);
}
// 接收消息
if (mq_receive(mq, buffer, sizeof(buffer), &prio) == -1) {
perror("mq_receive");
exit(1);
}
printf("Received message: %s\n", buffer);
// 关闭消息队列
mq_close(mq);
mq_unlink(MSG_QUEUE_NAME);
return 0;
}
```
这个例程首先创建了一个消息队列,并设置了消息队列的属性。然后发送了一个消息,接着接收了一个消息,并将其打印出来。最后关闭消息队列并删除它。
阅读全文