system v--消息队列
来源:互联网 发布:unity3d特效 编辑:程序博客网 时间:2024/04/27 18:10
消息队列相关操作涉及到的几个主要函数
1、创建消息队列
int msgget( key_t key, int msgflg);
参数key:是一个键值,由ftok获得. key_t ftok(const char *pathname, int proj_id);
参数msgflg:标志位,可以是IPC_CREAT、IPC_EXCL、IPC_NOWAIT的组合
函数返回:返回与键值key对应的消息队列描述字,失败返回-1。
2、写消息队列:
int msgsnd( int msgid, const void* msg, size_t len, int flag);
参数msgid:消息ID的标志
参数msg:将要发送的消息
参数len:发送的消息长度,不包括消息类型的长度哟!!!
参数flag:
IPC_NOWAIT--在消息队列没有足够的空间来容纳消息时,msgsnd是否等待
函数返回:0表示成功,-1表示失败
3、读消息队列:
size_t msgrcv( int msgid, void* msg, size_t len, long msgtype, int flag);
参数msgid:消息ID的标志
参数msg:接收到的消息
参数len:接收的消息长度
参数msgtype:读取的消息类型
0 返回消息队列中的第一个消息
>0 返回消息队列中类型为msgtype的第一个消息
<0 返回消息队列中绝对值小于msgtype的类型值最小的一个消息
参数flag:
IPC_NOWAIT 如果没有满足条件的消息,调用立即返回,此时,errno=ENOMSG
IPC_EXCEPT 与msgtyp>0配合使用,返回队列中第一个类型不为msgtype的消息
IPC_NOERROR 如果队列中满足条件的消息内容大于所请求的len字节,则把该消息截断,截断部分将丢失。
函数返回:成功则返回消息的数据部分长度,失败则返回-1
注:上面的参数中提到了消息类型,实际上消息队列中的每一个元素的结构都是如下的样子:
struct msgtype {
long mtype; // 头4个字节表征了消息类型
char buffer[]; // 实际传播的消息数据
};
4、消息队列控制:
int msgctl( int msgid, int cmd, struct msqid_ds* buf);
struct msqid_ds
{
struct ipc_perm msg_perm; /* Ownership and permissions */
time_t msg_stime; /* Time of last msgsnd(2) */
time_t msg_rtime; /* Time of last msgrcv(2) */
time_t msg_ctime; /* Time of last change */
unsigned long __msg_cbytes; /* Current number of bytes in
queue (non-standard) */
msgqnum_t msg_qnum; /* Current number of messages
in queue */
msglen_t msg_qbytes; /* Maximum number of bytes
allowed in queue */
pid_t msg_lspid; /* PID of last msgsnd(2) */
pid_t msg_lrpid; /* PID of last msgrcv(2) */
};
参数msgid:消息ID标志
参数cmd: IPC_STAT 用来获取消息队列的相关信息,并将信息存储在buf中
IPC_SET 用来设置消息队列的属性,要设置的属性填充在buf中,注意并不是每个属性都可以设置
IPC_RMID 用来删除消息ID为msgid的消息队列
参数buf: msqid_ds结构
函数返回:成功则返回0,失败返回-1
5、系统中消息队列的几个限制
一个消息队列中最大容纳的消息数量:
一个消息队列占用的空间数量:MSGMNB
一个消息队列中的单个消息的最大长度:MSGMAX
系统中支持的最大消息队列数:
- system v 消息队列
- System V 消息队列
- system v--消息队列
- System V消息队列
- system V消息队列
- System V消息队列
- System V 消息队列
- System V 消息队列
- 消息队列(system V IPC)
- 消息队列(System V)
- System V 消息队列(一)
- System V消息队列(三)
- System V IPC_msg消息队列
- 58-System V 消息队列
- linux ipc system v 消息队列源码
- System V的消息队列(1)
- System V消息队列(2)
- Linux 进程通信(System V)消息队列
- extjs制作进度条
- 面试题目
- 《数值计算方法》勘误
- hadoop 1.0.1单机版搭建
- grub2配置文件详解
- system v--消息队列
- 字符识别?
- 用poi包填充excel中单元格 颜色效果
- 收集的名称
- 插件Discuz版本号兼容
- Bat应用 - 备份项目
- 新的开始
- 钽电容基本知识
- HBase在淘宝主搜索的Dump中的性能调优