15.7 进程间通信_消息队列
来源:互联网 发布:游戏源码提取软件 编辑:程序博客网 时间:2024/05/13 15:25
消息队列是消息的链接表,存放在内核中并由消息队列标识符标识。每个消息包含一个正长整型类型之段,一个非负长度以及实际数据字节(对应于长度)。
- #include <sys/msg.h>
- int msgget(key_t key, int flag);
- int msgctl(int msgid, int cmd, struct msqid_ds *buf);
- int msgsnd(int msqid, const void *ptr, size_t nbytes, int flag);
以上三个函数成功返回消息队列ID,出错返回-1
- ssize_t msgrcv(int msqid, void *ptr, size_t nbytes, long type, int flag);
返回值:若成功则返回消息的数据部分的长度,若出错则返回-1
msgget用于打开一个现存队列或创建一个新队列。
msgctl对队列执行多种操作,类似于ioctl函数。
msgsnd将数据放到消息队列中。消息总是放在队列尾端。ptr指向一个长整型数,它包含了正的整型消息类型,在其后紧跟着消息数据的缓冲区。nbytes说明数据缓冲区的长度。参数flag的值可以指定为IPC_NOWAIT,这类似于文件I/O的非阻塞I/O标志。
msgrcv从队列中取用消息。其ptr、nbytes、flag同msgsnd的一样意义。参数type可以指定想要哪一种消息:
- type == 0 返回队列中的第一个消息。
- type > 0 返回队列中消息类型为type的第一个消息。
- type < 0 返回队列中消息类型值小于或等于type绝对值的消息,如果这种消息有若干个,则取类型值最小的消息。
type值非0用于以非先进先出次序读消息。
msgrcv成功执行时,内核更新与该消息队列相关联的msqid_ds结构,以指示调用者的进程ID(msg_lrpid)和调用时间(msg_rtime),并将队列中的消息数(msg_qnum)减1。
- 15.7 进程间通信_消息队列
- 进程间消息队列通信
- 进程间通信:消息队列
- 进程间通信--消息队列
- 进程间通信-消息队列
- 进程间通信-消息队列
- 进程间通信----消息队列
- 进程间通信-消息队列
- 进程间通信-消息队列
- 消息队列 进程间通信
- 进程间通信---消息队列
- 进程间通信--消息队列
- 进程间通信-消息队列
- 进程间通信----消息队列
- 进程间通信--消息队列
- 进程间通信---消息队列
- 进程间通信--消息队列
- 进程间通信--消息队列
- 完全掌握加密解密实战超级手册
- LINUX 下C++的Socket通讯
- Informix数据库利用索引提高查询效率
- iphone数据库简单应用之一
- Linux.Command.find-更新中
- 15.7 进程间通信_消息队列
- linux和unix时钟服务器
- 谁是你随时可以说话的人
- 在CMD窗口下创建当前日期和时间连接的目录
- eclipse生成jar包 (转贴) myeclipse一样可用
- Past, Present, Future of Windows Exploitation - 2
- 知道如何用.NET在AutoCAD中添加一个插件来显示图纸集数据吗?
- 可重入函数
- ASP.NET 安全认证-----单点登录