Linux进程间同步和通信3:消息队列

2018-06-20  本文已影响0人  AmberXiao

目录:
1. 半双工管道
2. 命名管道
3. 消息队列
4. 信号量
5. 信号
6. 共享内存


3 消息队列

3.1 特点

3.2 基本知识

3.2.1 ftok()函数

ftok()函数用于使用路径名和项目表示符构建一个键值。

#include <sys/types.h>
#include <sys/ipc.h>
key_t ftok(
  const char *pathname,  //已经存在的目录
  int proj_id  //8位的值,通常a,b
);

调用成功返回0,失败返回-1.

3.2.2 msgget()函数

创建一个新的消息队列或者访问一个现有的队列。

#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
int msgget(
  ket_t key,
  int msgflag
);
3.2.3 msgsnd()&msgrcv()函数

msgsnd()&msgrcv()分别用于向队列传递消息和从队列中接受消息。

#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
int msgsnd(
  int msgid,
  const void *msgp,
  size_t msgsz,
  int msgflg
);
int msgrcv(
  int msgid,
  void *msgp,
  size_t msgsz,
  long msgtyp,
  int msgflg
);
3.2.4 msgctl()函数

在消息队列上执行控制操作.

#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
int msgctl(
  int msgid,
  int cmd,
  struct msgid_ds *buf
);

3.3 消息队列例程

上一篇 下一篇

猜你喜欢

热点阅读