#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
struct my_msg
{
int msg_type;
char text[1024];
}msgbuf;
int main()
{
int running = 1;
int msgid;
long int msg_recv = 0;
msgid = msgget((key_t)1234,0666|IPC_CREAT);
if(msgid == -1)
{
printf("msgget failed\n");
exit(1);
}
while(running)
{
if(msgrcv(msgid,(void*)&msgbuf,1024,msg_recv,0)==-1)
{
printf("msgrcv failed\n");
exit(1);
}
printf("You recv:%s",msgbuf.text);
if(strncmp(msgbuf.text,"end",3)== 0 )
running = 0;
}
if(msgctl(msgid, IPC_RMID, 0) == -1)
{
printf("msgct(IPC_RMID)failed\n");
exit(1);
}
}
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
struct my_msg
{
int msg_type;
char text[1024];
}msgbuf;
int main()
{
int running = 1;
int msgid;
msgid = msgget((key_t)1234, 0666|IPC_CREAT);
if(msgid == -1)
{
printf("msgget failed\n");
exit(1);
}
while(running)
{
printf("plesae input text : ");
fgets(msgbuf.text, 1024, stdin);
msgbuf.msg_type = 1;
if(msgsnd(msgid,(void*)&msgbuf,1024, 0 )== -1)
{
printf("msgsenf failed\n");
exit(1);
}
if(strncmp(msgbuf.text,"end", 3)==0)
running = 0;
}
return 0;
}
运行如下
./msgsend
pleade input text : hello
please input text: world
please input text: end
./msgrecv
You recv :hai
You recv :world
You recv :end: