UNPv2第六章:System V 消息队列
来源:互联网 发布:如何查看知乎注册时间 编辑:程序博客网 时间:2024/06/07 00:24
6.1 概述
6.2 msgget函数
用于创建一个新的消息队列或者访问一个已存在的消息队列
#include <sys/msg.h>int msgget(key_t key, int oflag) 返回:成功时为非负标识符,出错时为-1
返回值是一个整数标识符,其他三个msg函数就用它来指代该队列。它是基于指定的key产生的,而key既可以是ftok返回值,也可以是IPC_PRIVATE。
参数oflag可以为以下:IPC_CREAT、IPC_EXCL、IPC_NOWAIT或三者的或结果。
6.3 msgsnd函数
#include <sys/msg.h>int msgsnd(int msgid, const void *ptr, size_t length, int flag);功能:往一个已打开的消息队列发送一个消息。返回:成功时为0, 出错时为-1
ptr是一个结构指针,该结构具有如下的模板:
struct msgbuf{ long mtype; /* message type, must be > 0 */ char mtext[1]; /* message data */};
消息类型必须大于0,因为对于msgrcv函数来说,非正消息类型用作特殊的指示器。
msgsnd的length参数以字节为单位指定待发送消息的长度
flag参数可以为0,也可以是IPC_NOWAIT。IPC_NOWAIT标志使的msgsnd调用非阻塞(nonblocking).
6.4 msgrcv
#include <sys/msg.h>ssize_t msgrcv(int msgid, void *ptr, size_t length, long type, int flag);功能: 从某个消息队列中读出一个消息返回:成功时为读入缓冲区中数据的字节数,出错是为-1
6.5 msgctl函数
#include <sys/msg.h>int msgctl(int msqid, int cmd, struct msqid_ds *buff);功能: 提供在一个消息队列上的各种控制操作。返回: 成功时为0,出错时为-1
该系统调用对由msqid标识的消息队列执行cmd操作,共有三种cmd操作:IPC_STAT、IPC_SET 、IPC_RMID。
IPC_STAT:该命令用来获取消息队列信息,返回的信息存贮在buf指向的msqid结构中;
IPC_SET:该命令用来设置消息队列的属性,要设置的属性存储在buf指向的msqid结构中;可设置属性包括:msg_perm.uid、msg_perm.gid、msg_perm.mode以及msg_qbytes,同时,也影响msg_ctime成员。
IPC_RMID:删除msqid标识的消息队列;
0 0
- UNPv2第六章:System V 消息队列
- UNPv2:进程间通信(三) System V 消息队列
- UNPv2第三章:System V IPC
- UNPv2第十一章:System V信号灯
- system v 消息队列
- System V 消息队列
- system v--消息队列
- System V消息队列
- system V消息队列
- System V消息队列
- System V 消息队列
- System V 消息队列
- UNPv2第五章:Posix消息队列
- UNPv2第十四章:System V共享内存区
- 消息队列(system V IPC)
- 消息队列(System V)
- System V 消息队列(一)
- System V消息队列(三)
- hdu-1174 爆头(计算几何)
- JS的跨域请求
- struts2中action接收参数的方法
- 搭建本地yum源(http方式) on Red Hat Enterprise Linux Server
- CNN入门之cnn架构和cnn卷积、采样
- UNPv2第六章:System V 消息队列
- 屏幕设置
- 开发Vue树形组件
- 与孩子一起学编程--Ubuntu环境下
- mysql show status
- VS2015使用小技巧 让VS的代码编辑器显示行号
- 关于 redis、memcache、mongoDB 的对比
- 库文件编译
- Android学习路线总结