写一份C语言实现消息队列程序
时间: 2023-02-21 12:37:54 浏览: 56
下面是一份用C语言实现消息队列程序的代码:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
#define MAX_TEXT 512
struct message {
long int message_type;
char message_text[MAX_TEXT];
};
int main() {
key_t key;
int msgid;
struct message message;
key = ftok(".", 'a');
msgid = msgget(key, 0666 | IPC_CREAT);
if (msgid == -1) {
perror("msgget failed with error");
exit(EXIT_FAILURE);
}
while (1) {
printf("Enter message type (positive integer only, 0 to exit): ");
scanf("%ld", &message.message_type);
if (message.message_type == 0) {
break;
}
printf("Enter message text: ");
scanf("%s", message.message_text);
if (msgsnd(msgid, (void *) &message, MAX_TEXT, 0) == -1) {
perror("msgsnd failed with error");
exit(EXIT_FAILURE);
}
printf("Message sent\n");
}
if (msgctl(msgid, IPC_RMID, NULL) == -1) {
perror("msgctl(IPC_RMID) failed with error");
exit(EXIT_FAILURE);
}
exit(EXIT_SUCCESS);
}
```
这份代码实现了一个简单的消息队列程序,该程序可以向消息队列中发送消息。您可以输入消息类型(必须为正整数)和消息文本,该程序将把消息放入消息队列中。输入0退出程序并删除消息队列。