/*****send.c*****/
#include<sys/types.h>
#include<sys/ipc.h>
#include<sys/msg.h>
#include<stdio.h>
#include<string.h>
struct msgbuf
{
int msg_type;
char msg_text[1024];
};
void main()
{
key_t key;
int msgid;
int type;
char buf[1024];
struct msgbuf msgst;
msgid = msgget(1024, IPC_CREAT);
while(1)
{
printf("please input type of message: (0 to exit!)\n");
scanf("%d", &type);
if(type == 0)
break;
printf("please input content of message:\n");
scanf("%s", buf);
msgst.msg_type = type;
strcpy(msgst.msg_text, buf);
printf("type: %d\ncontent: %s\n", msgst.msg_type, msgst.msg_text);
msgsnd(msgid, &msgst, sizeof(struct msgbuf), 0);
}
msgctl(msgid, IPC_RMID, 0);
}
/******receive.c********/
#include<sys/types.h>
#include<sys/ipc.h>
#include<sys/msg.h>
#include<stdio.h>
#include<string.h>
struct msgbuf
{
int msg_type;
char msg_text[1024];
};
void main()
{
key_t key;
pid_t pid;
long int type;
char buf[1024];
int msgid;
struct msgbuf msgst;
msgid = msgget(1024, IPC_EXCL);
while(1)
{
printf("Please enter the number of message type you want to receive:(0 to exit)\n");
scanf("%ld", type);
if(type == 0)
break;
msgrcv(msgid, &msgst, sizeof(struct msgbuf), type, 0);
printf("content: %s\n", msgst.msg_text);
}
msgctl(msgid, IPC_RMID, 0);
}
send行程可以發送,使用ipcs查看也有訊息佇列,但是receive行程收不到訊息,一直處于阻塞狀態。求大神指點
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/55225.html
標籤:應用程序開發區
