用c语言写消息队列代码
时间: 2023-10-16 21:10:04 浏览: 100
C语言版实现链队列
以下是一个基本的消息队列代码实现,使用了Linux系统的消息队列API:
```c
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
#define MAX_TEXT 512
struct msgbuf {
long mtype;
char mtext[MAX_TEXT];
};
int main()
{
int msgid;
struct msgbuf msg;
// 创建消息队列
if ((msgid = msgget(IPC_PRIVATE, 0666)) == -1) {
perror("msgget");
exit(1);
}
printf("Message queue created with ID = %d\n", msgid);
// 发送消息
msg.mtype = 1;
strcpy(msg.mtext, "Hello, World!");
if (msgsnd(msgid, &msg, MAX_TEXT, 0) == -1) {
perror("msgsnd");
exit(1);
}
printf("Message sent: %s\n", msg.mtext);
// 接收消息
if (msgrcv(msgid, &msg, MAX_TEXT, 1, 0) == -1) {
perror("msgrcv");
exit(1);
}
printf("Message received: %s\n", msg.mtext);
// 删除消息队列
if (msgctl(msgid, IPC_RMID, NULL) == -1) {
perror("msgctl");
exit(1);
}
printf("Message queue deleted\n");
return 0;
}
```
代码中首先创建了一个消息队列,然后发送了一条消息,接着又接收了一条消息,最后删除了消息队列。在发送和接收消息时,需要指定消息的类型,以便对应发送和接收。
阅读全文