题目:编写两程序,程序1从消息队列接收消息,程序2则发送消息(假设发送的消息是My name is ---)。
要求:程序,(附注释)调试经过,结果
谢谢。
回复:stesen05
我这里没有运行环境,后天就要交了
求注释调试经过运行结果以及截图 稍微写点
可不可以运行一下截个图发到我邮箱啊
[email protected]谢谢了
Linux程序设计:关于消息队列题目:编写两程序,程序1从消息队列接收消息,程序2则发送消息
答案:1 悬赏:60
解决时间 2021-11-29 02:50
- 提问者网友:写不出迷人情诗
- 2021-11-28 03:49
最佳答案
- 二级知识专家网友:一池湖水
- 2021-11-28 04:19
我的作业,你凑合着用吧
//msgq_send.c
#include <stdio.h>
#include <string.h>
#include <sys/msg.h>
#define MAXSIZE 256
int main(int argc, char *argv[])
{
if (argc < 2)
{
printf("Error args\n");
return -1;
}
int msgid;
msgid = msgget((key_t)2000, IPC_CREAT | 0644);
if (msgid == -1)
{
printf("msgget error\n");
return -1;
}
if (msgsnd(msgid, (void *)argv[1], MAXSIZE, 0) == -1)
{
printf("msgsnd error\n");
return -1;
}
return 0;
}
//msgq_recv.c
#include <stdio.h>
#include <string.h>
#include <sys/msg.h>
#define MAXSIZE 256
int main(void)
{
int msgid;
int msgsize;
char buff[MAXSIZE];
msgid = msgget((key_t)2000, IPC_CREAT | 0644);
if (msgid == -1)
{
printf("msgget error\n");
return -1;
}
msgsize = msgrcv(msgid, (void *)&buff, MAXSIZE, 0, 0);
if (msgsize == -1)
{
printf("msgrcv error\n");
return -1;
}
printf("%s\n", buff);
return 0;
}
//Makefile
TARGET := msgq_send msgq_recv
CC := gcc
CFLAGS := -Wall -g
all: msgq_send msgq_recv
msgq_send: msgq_send.o
$(CC) $(CFLAGS) $^ -o $@
msgq_recv: msgq_recv.o
$(CC) $(CFLAGS) $^ -o $@
clean:
rm -fr *.o $(TARGET)
.PHONY :clean
//msgq_send.c
#include <stdio.h>
#include <string.h>
#include <sys/msg.h>
#define MAXSIZE 256
int main(int argc, char *argv[])
{
if (argc < 2)
{
printf("Error args\n");
return -1;
}
int msgid;
msgid = msgget((key_t)2000, IPC_CREAT | 0644);
if (msgid == -1)
{
printf("msgget error\n");
return -1;
}
if (msgsnd(msgid, (void *)argv[1], MAXSIZE, 0) == -1)
{
printf("msgsnd error\n");
return -1;
}
return 0;
}
//msgq_recv.c
#include <stdio.h>
#include <string.h>
#include <sys/msg.h>
#define MAXSIZE 256
int main(void)
{
int msgid;
int msgsize;
char buff[MAXSIZE];
msgid = msgget((key_t)2000, IPC_CREAT | 0644);
if (msgid == -1)
{
printf("msgget error\n");
return -1;
}
msgsize = msgrcv(msgid, (void *)&buff, MAXSIZE, 0, 0);
if (msgsize == -1)
{
printf("msgrcv error\n");
return -1;
}
printf("%s\n", buff);
return 0;
}
//Makefile
TARGET := msgq_send msgq_recv
CC := gcc
CFLAGS := -Wall -g
all: msgq_send msgq_recv
msgq_send: msgq_send.o
$(CC) $(CFLAGS) $^ -o $@
msgq_recv: msgq_recv.o
$(CC) $(CFLAGS) $^ -o $@
clean:
rm -fr *.o $(TARGET)
.PHONY :clean
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯