message.c

来自「中科院徐志伟老师一书《操作系统 原理·技术与编程》的源代码和习题接」· C语言 代码 · 共 47 行

C
47
字号
#include <stdio.h>
#include <sys/types.h>
#include <sys/msg.h>
#include <sys/ipc.h>

struct msgbuf {
  long mtype;
  char mtext[80];
}  msq_buf;


void main() {
  key_t  key;
  int msgid;
  int i;

    // Open a message queue:
  msgid = msgget(IPC_PRIVATE, IPC_CREAT | 0666);
  printf("message queue msgid=%d\n", msgid);
  if (msgid == -1) {
    perror("msgget(access)");
    exit(1);
  }

  // Send a message:
  printf("Sending a print message...\n");
  msq_buf.mtype = 1;
  sprintf(msq_buf.mtext,"print a message");
  if (msgsnd(msgid, (struct msgbuf *)&msq_buf, sizeof("print a message") + 1, 0) == -1) { 
    perror("msgsend");
    printf("Error sending message\n");
    exit(1);
  }
    
  // Receive message:
  msq_buf.mtext[0] = 0;  
  i = msgrcv(msgid, (struct msgbuf *)&msq_buf, 80, 1, IPC_NOWAIT);
  if (i == -1) { 
    printf("no message is avaliable of type 1\n");
  } else {
    printf("message of type 1 received with data: %s\n", msq_buf.mtext);
  }

  // Now remove the message queue:
  msgctl(msgid, IPC_RMID, 0);
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?