struct msgbuf
{
long type;
char buf[128];
};
int main(int argc, const char *argv[])
{
if(argc!=2)
{
printf("参数错误\n");
return 1;
}
int msgtype=atoi(argv[1]);
key_t key=ftok("./ipc",1);
if(key==-1)
{
perror("ftok");
return 1;
}
int id=msgget(key,IPC_CREAT|0666);
if(id==-1)
{
perror("msgget");
return 1;
}
struct msgbuf msg;
int size=0;
while(1)
{
memset(&msg,0,sizeof(msg));
msg.type=msgtype;
printf("enter:");
scanf("%128s",msg.buf);
while(getchar()!=10);
size=strlen(msg.buf);
msgsnd(id,&msg,size,0);
}
struct msgbuf
{
long msgbuf;
char buf[128];
};
int main(int argc, const char *argv[])
{
if(argc!=2)
{
printf("参数错误\n");
return 1;
}
int msgtype=atoi(argv[1]);
key_t key=ftok("./ipc",1);
if(key==-1)
{
perror("ftok");
return 1;
}
int id = msgget(key,IPC_CREAT|0666);
if(id==-1)
{
perror("msgget");
return 1;
}
struct msgbuf msg;
int size=0;
while(1)
{
memset(&msg,0,sizeof(msg));
msgrcv(id,&msg,128,msgtype,1);
printf("读取消息:%s\n",msg.buf);
}