⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 message.c

📁 中科院徐志伟老师一书《操作系统 原理·技术与编程》的源代码和习题接
💻 C
字号:
#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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -