- 21
- 0
- 约9.03千字
- 约 21页
- 2017-06-10 发布于北京
- 举报
?消息队列函数(msgget、msgctl、msgsnd、msgrcv)及其范例?消息队列函数由msgget、msgctl、msgsnd、msgrcv四个函数组成。下面的表格列出了这四个函数的函数原型及其具体说明。1. ? msgget函数原型msgget(得到消息队列标识符或创建一个消息队列对象)所需头文件#include sys/types.h#include sys/ipc.h#include sys/msg.h函数说明得到消息队列标识符或创建一个消息队列对象并返回消息队列标识符函数原型intmsgget(key_t key, intmsgflg)函数传入值key0(IPC_PRIVATE):会建立新的消息队列大于0的32位整数:视参数msgflg来确定操作。通常要求此值来源于ftok返回的IPC键值msgflg0:取消息队列标识符,若不存在则函数会报错IPC_CREAT:当msgflgIPC_CREAT为真时,如果内核中不存在键值与key相等的消息队列,则新建一个消息队列;如果存在这样的消息队列,返回此消息队列的标识符IPC_CREAT|IPC_EXCL:如果内核中不存在键值与key相等的消息队列,则新建一个消息队列;如果存在这样的消息队列则报错函数返回值成功:返回消息队列的标识符出错:-1,错误原因存于error中附加说明上述msgflg参数为模式标志参数,使用时需要与IPC对象存取权限(如0600)进行|运算来确定消息队列的存取权限错误代码EACCES:指定的消息队列已存在,但调用进程没有权限访问它EEXIST:key指定的消息队列已存在,而msgflg中同时指定IPC_CREAT和IPC_EXCL标志ENOENT:key指定的消息队列不存在同时msgflg中没有指定IPC_CREAT标志ENOMEM:需要建立消息队列,但内存不足ENOSPC:需要建立消息队列,但已达到系统的限制如果用msgget创建了一个新的消息队列对象时,则msqid_ds结构成员变量的值设置如下:???????? msg_qnum、msg_lspid、msg_lrpid、msg_stime、msg_rtime设置为0。???????? msg_ctime设置为当前时间。???????? msg_qbytes设成系统的限制值。???????? msgflg的读写权限写入msg_perm.mode中。???????? msg_perm结构的uid和cuid成员被设置成当前进程的有效用户ID,gid和cuid成员被设置成当前进程的有效组ID。2. ? msgctl函数原型msgctl (获取和设置消息队列的属性)所需头文件#include sys/types.h#include sys/ipc.h#include sys/msg.h函数说明获取和设置消息队列的属性函数原型intmsgctl(intmsqid, intcmd, structmsqid_ds *buf)函数传入值msqid消息队列标识符cmd?IPC_STAT:获得msgid的消息队列头数据到buf中IPC_SET:设置消息队列的属性,要设置的属性需先存储在buf中,可设置的属性包括:msg_perm.uid、msg_perm.gid、msg_perm.mode以及msg_qbytesbuf:消息队列管理结构体,请参见消息队列内核结构说明部分函数返回值成功:0出错:-1,错误原因存于error中错误代码EACCESS:参数cmd为IPC_STAT,确无权限读取该消息队列EFAULT:参数buf指向无效的内存地址EIDRM:标识符为msqid的消息队列已被删除EINVAL:无效的参数cmd或msqidEPERM:参数cmd为IPC_SET或IPC_RMID,却无足够的权限执行3. ? msgsnd函数原型msgsnd (将消息写入到消息队列)所需头文件#include sys/types.h#include sys/ipc.h#include sys/msg.h函数说明将msgp消息写入到标识符为msqid的消息队列函数原型intmsgsnd(intmsqid, const void *msgp, size_tmsgsz, intmsgflg)函数传入值msqid消息队列标识符msgp发送给队列的消息。msgp可以是任何类型的结构体,但第一个字段必须为long类型,即表明此发送消息的类型,msgrcv根据此接收消息。msgp定义的参照格式如下:? ??structs_msg{ /*msgp定义的参照格式*/???? long type; /* 必须大于0,消息类型 */?????????? char mtext[256]; /*消息正文,可以是其他任何类型*/??? } msgp;msg
您可能关注的文档
最近下载
- 贝纳利BJ250维修手册.pdf VIP
- PasswortD A1 听力原文-德语学习资料.pdf VIP
- 一体化污水处理设备施工工艺.docx VIP
- 自动可调螺杆机组触摸屏说明书_SCC60-TP-V2.05.doc VIP
- 学堂在线 雨课堂 学堂云 如何写好科研论文 章节测试答案.docx VIP
- 人教版八年级数学下册基础知识专项讲练 专题17.20 勾股定理(中考真题专练)(巩固篇)(专项练习).docx VIP
- 教育实习鉴定实习内容.docx VIP
- 《GBT11616-2013-同步带传动节距型号MXL、XXL、XL、L、H、XH和XXH同步带尺寸》.pdf
- 离婚协议书(无子女版).docx VIP
- pluronic系列产品指标.pptx VIP
原创力文档

文档评论(0)