Linuxc之消息队列

1.进程A向消息队列发送消息“hello,world”
 
2.进程B从消息队列读取消息,并打印。


源代码:
write.c
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
#include <string.h>
struct msg
{
 long msg_types;
 char msg_buf[512];
 };
 
 int main()
 {
  int newsid,pid,len;
 char a;
 printf("请输入消息\n");
 scanf("%s",&a);
  struct msg pmsg;
  pmsg.msg_types=getpid();
  strcpy(pmsg.msg_buf,a);
  len = strlen(pmsg.msg_buf);
  
  if((newsid=msgget(1234,IPC_CREAT|0666))<0)
  {
   printf("msgget error\n");
   exit(1);
  }
 if((msgsnd(newsid,&pmsg,len,0))<0)
 {
  printf("msgsnd error\n");
  exit(1);
 }
  return 0;
 }

read.c
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
#include <string.h>
struct msg
{
 long msg_types;
 char msg_buf[512];
};
int main()
{
 int newsid,len;
 struct msg pmsg;
 newsid = msgget(1234,IPC_CREAT|0666);
 len=msgrcv(newsid,&pmsg,4096,0,0);
 if(len>0)
 {
  pmsg.msg_buf[len]='\0';
  printf("%s\n",pmsg.msg_buf);
 }
 else if(len==0)
 {
  printf("no message\n");
 }
 else
 {
  printf("error\n");
  exit(0);
 }
 return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_37192076/article/details/80777928
今日推荐