1.使用键盘来指定发送和接受消息
发送消息:
#include <sys/types.h>
#include <sys/wait.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <errno.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <sys/ipc.h>
#include <sys/msg.h>
struct msgbuf{
long mtype;
char mtext[100];
}buf;
int main(int argc, const char *argv[])
{
//1.创建key值
key_t key=ftok("./",1);
if(-1==key)
{
perror("创建key值失败");
return -1;
}
//2.创建消息队列
int msg_id=msgget(key,IPC_CREAT | 0777);
if(-1==msg_id){
perror("创建队列失败");
return -1;
}
//3.通过键盘制定消息标识并发送消息
printf("请输入消息标识:");
long a;
scanf("%ld",&a);
buf.mtype=a;
getchar();
while(1){
memset(buf.mtext,0,sizeof(buf.mtext));
fgets(buf.mtext, sizeof(buf.mtext), stdin);
int msg_ret = msgsnd(msg_id,&buf,strlen(buf.mtext),0);
if(-1==msg_ret){
perror("发送消息失败");
return -1;
}
if(strcmp(buf.mtext,"bye\n")==0){
break;
}
}
return 0;
}
2.接受消息
#include <sys/types.h>
#include <sys/wait.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <errno.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <sys/ipc.h>
#include <sys/msg.h>
struct msgbuf{
long mtype;
char mtext[100];
}buf;
int main(int argc, const char *argv[])
{
//1.创建key值
key_t key=ftok("./",1);
if(-1==key)
{
perror("创建key值失败");
return -1;
}
//2.创建消息队列
int msg_id=msgget(key,IPC_CREAT | 0777);
if(-1==msg_id){
perror("创建队列失败");
return -1;
}
//3.通过键盘制定消息标识并接受消息
printf("请输入要接收的消息类型(整数): ");
long a;
scanf("%ld", &a);
getchar();
while(1){
memset(buf.mtext,0,sizeof(buf.mtext));
int msg_ret = msgrcv(msg_id,&buf,sizeof(buf.mtext),a,0);
if(-1==msg_ret){
perror("接受消息失败");
return -1;
}
printf("%s",buf.mtext);
if(strcmp(buf.mtext,"bye\n")==0){
break;
}
}
return 0;
}