Linux进程通信之消息队列
来源:互联网 发布:java数组 编辑:程序博客网 时间:2024/06/08 18:02
1. 消息队列
1) 概念:消息的一个链表,运行一个或多个进程向它写消息,也运行一个或多个进程向它读消息。
2) 操作
msgget:创建和打开队列,其消息数量受系统限制。
int msgget (key_tkey, int flag)
key:返回新的或已有队列的ID,IPC_PRIVATE
msgsnd:添加消息,将消息添加到消息队列尾部。
int msgsnd (int msqid, struct msgbuf *msgp, size_t msgsz, int flag)
其中:msqid是消息队列的队列ID;
n msgp是消息内容所在的缓冲区;
n msgsz是消息的大小;
n msgflg是标志,IPC_NOWAIT若消息并没有立交发送而调用进程会立即返回。
msgrcv:读取消息,从消息队列中取走消息。
int msgrcv (int msqid, struct msgbuf*msgp, size_t msgsz,long msgtyp, intflag)
n msqid是消息队列的引用标识符;
n msgp是接收到的消息将要存放的缓冲区;
n msgsz是消息的大小;
n msgtyp是期望接收的消息类型;
n msgflg是标志。
msgctl:控制消息队列。
int msgctl (intmsqid, int cmd, struct msqid_ds *buf)
msqid是消息队列的引用标识符;
cmd是执行命令;
buf是一个缓冲区。
cmd参数指定对于由msqid规定的队列要执行的命令:
n IPC_STAT 取此队列的msqid_ds结构,并将其存放在buf指向的结构中。
n IPC_SET 按由buf指向的结构中的值,设置与此队列相关的结构中的下列四个字段:
msg_perm.uid、msg_perm.gid、msg_perm;mode和msg_qbytes。此命令只能由下列两种进程执行:一种是其有效用户ID等于msg_perm.cuid或msg_perm.uid;另一种是具有超级用户特权的进程。只有超级用户才能增加msg_qbytes的值。
n IPC_RMID 从系统中删除该消息队列以及仍在该队列上的所有数据。这种删除立即生效。仍在使用这一消息队列的其他进程在它们下一次试图对此队列进行操作时,将出错返回EIDRM。
- linux进程间通信之消息队列
- linux进程间通信之消息队列
- linux进程间通信之消息队列
- Linux进程间通信之消息队列
- Linux进程通信之消息队列
- linux 进程间通信之消息队列
- linux进程间通信之消息队列
- linux进程间通信之消息队列
- Linux下进程通信之消息队列
- Linux进程通信之POSIX消息队列
- Linux进程通信之POSIX消息队列
- linux进程通信之消息队列
- Linux进程通信之POSIX消息队列
- linux进程间通信之消息队列
- linux进程间通信之消息队列
- linux c++进程通信之消息队列
- Linux进程通信之POSIX消息队列
- linux进程间通信之消息队列
- 用C实现预编器的操作——#include和#define
- android 中layer-list的用法
- Python __all__
- 图论是理解大数据的关键吗?
- cin cin.get() cin.getline() string类成员函数getline(cin,str)使用方法区别与联系
- Linux进程通信之消息队列
- leetcode_99_Recover Binary Search Tree
- Redis 2.8.18 安装报错 error: jemalloc/jemalloc.h: No such file or directory
- 每个人都是独一无二的
- javascript加RoR实现JSONP
- mysql管理用户权限grant与revoke命令
- sqoop1.99.4的安装和使用
- Ubuntu下移动文件和修改文件名
- 1.Google RPC-一个RPC库和框架