linux消息队列函数
来源:互联网 发布:mes 生产优化调度算法 编辑:程序博客网 时间:2024/05/16 08:40
本人初学ARM板开发,今天学习linux下的消息队列函数
例子程序下载:
消息发送:msgsnd.c
消息接受:msgrcv.c
1.key_t ftok(char *pathname,char proj)
返回文件名对应的键值(把消息队列当作文件处理)
头文件:#include <sys/types.h> #include <sys/ipc.h>
pathname:文件名
proj:项目名(不为0即可)
2.int msgget(key_t key,int msgflg)
打开或创建消息队列
头文件:#include <sys/types.h> #include <sys/ipc.h> #include <sys/msg.h>
key:键值,由ftok获得
msgflg:标志位(
IPC_CREAT,如果不存在,创建新的消息队列
IPC_EXCL,与IPC_CREAT一起使用,表示如果消息队列已存在,则返回错误
IPC_NOWAIT,读写消息队列要求无法得到满足时,不阻塞)
返回值:与键值key相对应的消息队列描述字,出错时返回-1
**在以下两种情况下,将创建一个新的消息队列:
a)如果没有与键值key相对应的消息队列,并且msgflg参数中包含了IPC_CREAT标志位
b)key参数为IPC_PRIVATE
3.int msgsnd(int msqid,struct msgbuf *msgp,int msgsz,int msgflg)
向消息队列中发送一条消息
头文件:#include <sys/types.h> #include <sys/ipc.h> #include <sys/msg.h>
msqid:消息队列id(消息队列的描述字)
msgp:存放消息的结构(格式为:
struct msgbuf
{
int mtype; /*消息类型 > 0*/
char mtex[1]; /*消息数据,字符数组*/
};
)
msgsz:消息数据长度
msgflg:发送标志,有意义的msgflg标志为IPC_NOWAIT,指明消息队列中没有足够空间容纳要发送的消息时,msgsnd是否等待,0表示等待
返回值:发生错误时返回-1
4.int msgrcv(int msqid,struct msgbuf *msgp,int msgsz,long msgtyp,int msgflg)
从消息队列msqid中读取一个msgtyp类型的消息,并把消息存储在msgp指向的msgbuf结构体中。(在成功读取后,队列中的这条消息将被删除)
5.int msgctl (int msqid, int cmd, struct msqid_ds *buf)
消息队列属性控制
msqid:消息队列的标识符。
cmd:执行的控制命令,即要执行的操作。(包括以下选项:
IPC_STAT:读取消息队列属性。取得此队列的msqid_ds 结构,并将其存放在buf指向的结构中。
IPC_SET :设置消息队列属性。
IPC_RMID:删除消息队列。
IPC_INFO:读取消息队列基本情况。此命令等同于 ipcs 命令。
这 4 条命令(IPC_STAT、IPC_SET、IPC_INFO 和 IPC_RMID)也可用于信号量和共享存储。)
buf:临时的 msqid_ds 结构体类型的变量。用于存储读取的消息队列属性或需要修改的消息队列属性。
举例:msgctl(qid, IPC_RMID, NULL) //删除消息队列
例子程序下载:
消息发送:msgsnd.c
消息接受:msgrcv.c
- linux消息队列函数
- linux消息队列函数
- linux消息队列函数--解析
- linux消息队列函数(转)
- 消息队列函数
- 《消息队列》函数讲解
- 消息队列函数详解
- 消息队列操作函数
- 消息队列函数知识点
- Linux编程常用的函数(三) 消息队列
- (转)linux消息队列函数 msgget,msgsnd, msgrcv, ftok()
- linux消息队列函数msgget,msgsnd,_msgrcv,_ftok()
- linux网络编程之POSIX 消息队列 和 系列函数
- linux消息队列函数msgget,msgsnd, msgrcv, ftok()
- IPC - Linux 消息队列函数及应用欣赏一
- Linux中posix消息队列系统函数mq_timedreceive()谨慎使用
- Linux消息队列编程
- linux消息队列
- android混淆, 忽略第三方jar包
- Sparsity稀疏编码(三) (值得阅读)
- 将String类型转换成int类型
- hdu335(最小覆盖)
- windows查看端口使用情况,以及结束任务释放端口
- linux消息队列函数
- UVA 10670 Work Reduction (贪心 + 被题意坑了- -)
- 【解题报告】HDU 4631 Sad Love Story 最短点距(动态)
- CMiniDump类 程序崩溃时自动保存Dump文件
- 只会编程的程序员没有前途
- Pl/sql 存储过程
- 第四章(01)类和对象
- Linux 设置文件默认打开方式
- svn版本不统一的问题