编写程序 msg2.c 和 msg3.c。在 msg2.c 中建立一个消息队列,表明身份后,向 消息队列中写下 2 条信息:“ Hi,message1 is sending!” 和“Hi,message2 is sending!” 。 在 msg3.c 中,从消息队列中读取信息 2,并显示出来。C语言代码
时间: 2024-02-10 13:10:51 浏览: 89
MSG.rar_vxworks queue_消息队列 _消息队列 C
msg2.c代码如下:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
#define MSG_SIZE 1024
struct msgbuf {
long mtype;
char mtext[MSG_SIZE];
};
int main() {
key_t key;
int msgid;
struct msgbuf msg;
/* 创建消息队列 */
key = ftok(".", 'a');
msgid = msgget(key, IPC_CREAT | 0666);
if (msgid == -1) {
perror("msgget");
exit(1);
}
/* 发送消息1 */
msg.mtype = 1;
sprintf(msg.mtext, "Hi,message1 is sending!");
if (msgsnd(msgid, &msg, strlen(msg.mtext) + 1, 0) == -1) {
perror("msgsnd");
exit(1);
}
/* 发送消息2 */
msg.mtype = 1;
sprintf(msg.mtext, "Hi,message2 is sending!");
if (msgsnd(msgid, &msg, strlen(msg.mtext) + 1, 0) == -1) {
perror("msgsnd");
exit(1);
}
printf("Messages sent successfully!\n");
return 0;
}
```
msg3.c代码如下:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
#define MSG_SIZE 1024
struct msgbuf {
long mtype;
char mtext[MSG_SIZE];
};
int main() {
key_t key;
int msgid;
struct msgbuf msg;
/* 获取消息队列 */
key = ftok(".", 'a');
msgid = msgget(key, IPC_CREAT | 0666);
if (msgid == -1) {
perror("msgget");
exit(1);
}
/* 读取消息1 */
if (msgrcv(msgid, &msg, MSG_SIZE, 1, 0) == -1) {
perror("msgrcv");
exit(1);
}
printf("Received message1: %s\n", msg.mtext);
/* 读取消息2 */
if (msgrcv(msgid, &msg, MSG_SIZE, 1, 0) == -1) {
perror("msgrcv");
exit(1);
}
printf("Received message2: %s\n", msg.mtext);
return 0;
}
```
运行msg2.c后,再运行msg3.c,就可以看到输出的结果了。
阅读全文