unix系统开发-系统调用-进程间高级通信

unix系统开发-系统调用-进程间高级通信

ID:25715704

大小:57.00 KB

页数:7页

时间:2018-11-22

unix系统开发-系统调用-进程间高级通信_第1页
unix系统开发-系统调用-进程间高级通信_第2页
unix系统开发-系统调用-进程间高级通信_第3页
unix系统开发-系统调用-进程间高级通信_第4页
unix系统开发-系统调用-进程间高级通信_第5页
资源描述:

《unix系统开发-系统调用-进程间高级通信》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、UNIX系统开发-系统调用-进程间高级通信基本上所有的系统调用成功时返回0或正数,失败时返回负值。消息通信每个消息队列都有一个msqid_ds类型的控制结构,该结构中包括对消息队列的访问权限,其数据结构如下:structmsqid_ds{structipc_permmsg_perm;/*操作权限结构*/structmsgmsg_first;/*指向消息队列的第一个结构*/structmsgmsg_last;/*指向消息队列的最后一个结构*/ushortmsg_cbytes;/*队列中当前字节数*/ushortmsg_qnum;/*队列中消息数*/ushortmsg_qbytes;/*队列可

2、容纳的最大字节数*/ushortmsg_lspid;/*最后发送消息的进程号*/ushortmsg_lrpid;/*最后接收消息的进程号*/ushortmsg_stime;/*最后发送时间*/ushortmsg_rtime;/*最后接收时间*/time_tmsg_ctime;/*消息队列最后修改时间*/};msgget系统调用的格式#include#include#includeintmsgget(key,msgflg)key_tkey;/*消息队列关键字*/intmsgflags;/*创建标志和访问方式(类似于文件访问

3、权限)*/参数与功能说明:msgflg低9位类似于文件访问权限的低9位,其他位指明消息队列的建立方式:若指定的关键字消息队列不存在,msgflg&IPC_CREAT为真,则为他建立一个新的消息队列;msgflg&IPC_CREAT为假,返回-1。若指定的关键字消息队列存在,则返回该消息队列的描述符。若msgflg&IPC_CREAT&IPC_EXCL为真,若指定的关键字消息队列不存在,失败返回-1;否则正常返回。若key等于IPC_PRIVATE,则msgget调用总是成功的。msgsnd系统调用的格式#include#include#inc

4、ludeintmsgsnd(msqid,msgp,msgsz,msgflg)intmsqid;/*消息队列关键字*/structmsgbufmsgp;/指向消息缓冲的指针*/intmsgsz,msgflg;/*消息大小、发送标志*/参数与功能说明:发送一个消息到相关的消息队列上。其中msgp指向消息结构,他的基本格式是:structmsgbuf{intmtype;/*消息类型*/charmtext[];/*消息正文*/}msgflg具体含义为:msgflg&IPC_NOWAIT为真,那么如果操作条件不满足,则出错返回-1;msgflg&IPC_NOWAIT为假,那么如

5、果操作条件不满足,则睡眠等待。;msgrcv系统调用的格式#include#include#includeintmsgrcv(msqid,msgp,msgsz,msgtyp,msgflg)intmsqid;/*消息队列关键字*/structmsgbufmsgp;/指向消息缓冲的指针*/intmsgsz,msgflg;/*消息大小、发送标志*/longmsgtyp;/*消息接收类型*/参数与功能说明:从消息队列中接收一个消息。其中msgp指向消息结构,他的基本格式是:structmsgbuf{intmtype;/*消息类型

6、*/charmtext[];/*消息正文*/}msgflg具体含义为:msgflg&IPC_NOWAIT为真,那么如果接收的消息没有到达,则出错返回-1;msgflg&IPC_NOWAIT为假,那么如果接收的消息没有到达,则睡眠等待。;msgflg&MSG_NOERROR为真,那么如果msgrcv中的msgsz参数小于所接收的消息正文的长度,则本次可以接收msgsz字节,并且不把这种情况视为出错。msgtyp的取值及含义为:]msgtyp>0时,接收消息队列中类型为msgtyp的第一个消息。msgtyp=0时,接收消息队列中的第一个消息。msgtyp<0时,接收消息队列中类型值msgtyp

7、最小且<=

8、mstyp

9、的第一个消息。msgctl系统调用的格式#include#include#includeintmsgctl(msqid,cmd,buf)intmsqid;/*消息队列关键字*/intcmd;/控制命令*/structmsqid_ds*buf;/*指向消息队列控制块的指针*/参数与功能说明:根据控制命令cmd对msqid消息队列进

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。