///// send #include<stdio.h> #include<stdlib.h> #include<string.h> #include<unistd.h> #include<sys/types.h> #include<sys/ipc.h> #include<sys/msg.h> #define MAX_TEXT 1024 struct my_msg_st { long int my_msg_type; char some_text[MAX_TEXT]; }; int main(void) { struct my_msg_st data; int msgid; char buffer[MAX_TEXT]; if(-1==(msgid=msgget((key_t)1010,0666 | IPC_CREAT))) { printf("msgget error!\n"); exit(0); } while(1) { printf("Enter Message:"); gets(buffer); data.my_msg_type=1; strcpy(data.some_text,buffer); if(-1==(msgsnd(msgid,(void*)&data,MAX_TEXT,0))) { printf("message send error\n"); exit(0); } if(strcmp(buffer,"end")==0) break; } return 0; } /// receive #include<stdio.h> #include<stdlib.h> #include<string.h> #include<unistd.h> #include<sys/types.h> #include<sys/ipc.h> #include<sys/msg.h> #define MAX_TEXT 1024 struct my_msg_st { long int my_msg_type; char some_text[MAX_TEXT]; }; int main(void) { struct my_msg_st data; int msgid; long int msg_to_receive=0; if((msgid=msgget((key_t)1010,0666 | IPC_CREAT))==-1) { printf("msgget error!\n"); exit(0); } while(1) { if(-1==msgrcv(msgid,(void*)&data,MAX_TEXT,msg_to_receive,0)) { printf("receive error\n"); exit(0); } printf("MSG:%s\n",data.some_text); if(strcmp(data.some_text,"end")==0) break; } return 0; }