UNIX系统开发-系统调用-进程间高级通信.doc
7页1、UNIX系统开发系统调用进程间高级通信基本上所有的系统调用成功时返回0或正数,失败时返回负值。消息通信 每个消息队列都有一个msqid_ds类型的控制结构,该结构中包括对消息队列的访问权限,其数据结构如下:struct msqid_dsstruct ipc_perm msg_perm; /*操作权限结构 */struct msg msg_first; /*指向消息队列的第一个结构*/struct msg msg_last; /*指向消息队列的最后一个结构*/ushort msg_cbytes; /*队列中当前字节数*/ushort msg_qnum; /*队列中消息数*/ushort msg_qbytes; /*队列可容纳的最大字节数*/ushort msg_lspid; /*最后发送消息的进程号*/ushort msg_lrpid; /*最后接收消息的进程号*/ushort msg_stime; /*最后发送时间*/ushort msg_rtime; /*最后接收时间*/time_t msg_ctime; /*消息队列最后修改时间*/;msgget系统调用的格式#include #i
2、nclude #include int msgget(key,msgflg)key_t key; /*消息队列关键字*/int msgflags; /*创建标志和访问方式(类似于文件访问权限)*/参数与功能说明:msgflg低9位类似于文件访问权限的低9位,其他位指明消息队列的建立方式:若指定的关键字消息队列不存在,msgflg&IPC_CREAT为真,则为他建立一个新的消息队列; msgflg&IPC_CREAT为假,返回-1。若指定的关键字消息队列存在,则返回该消息队列的描述符。若msgflg&IPC_CREAT&IPC_EXCL为真,若指定的关键字消息队列不存在,失败返回-1;否则正常返回。若key等于IPC_PRIVATE,则msgget调用总是成功的。msgsnd系统调用的格式#include #include #include int msgsnd(msqid,msgp,msgsz,msgflg)int msqid; /*消息队列关键字*/struct msgbuf msgp; /指向消息缓冲的指针*/int msgsz,msgflg; /*消息大小、发送标志*/参数与功能
3、说明:发送一个消息到相关的消息队列上。其中msgp指向消息结构,他的基本格式是:struct msgbufint mtype; /*消息类型*/char mtext;/*消息正文*/msgflg具体含义为:msgflg&IPC_NOWAIT为真,那么如果操作条件不满足,则出错返回-1;msgflg&IPC_NOWAIT为假,那么如果操作条件不满足,则睡眠等待。;msgrcv系统调用的格式#include #include #include int msgrcv(msqid,msgp,msgsz,msgtyp,msgflg)int msqid; /*消息队列关键字*/struct msgbuf msgp; /指向消息缓冲的指针*/int msgsz,msgflg; /*消息大小、发送标志*/long msgtyp; /*消息接收类型*/参数与功能说明:从消息队列中接收一个消息。其中msgp指向消息结构,他的基本格式是:struct msgbufint mtype; /*消息类型*/char mtext;/*消息正文*/msgflg具体含义为:msgflg&IPC_NOWAIT为真,那么如
4、果接收的消息没有到达,则出错返回-1;msgflg&IPC_NOWAIT为假,那么如果接收的消息没有到达,则睡眠等待。;msgflg&MSG_NOERROR为真,那么如果msgrcv中的msgsz参数小于所接收的消息正文的长度,则本次可以接收msgsz字节,并且不把这种情况视为出错。msgtyp的取值及含义为:msgtyp0时,接收消息队列中类型为msgtyp的第一个消息。msgtyp=0时,接收消息队列中的第一个消息。msgtyp0时,接收消息队列中类型值msgtyp最小且=|mstyp|的第一个消息。msgctl系统调用的格式#include #include #include int msgctl(msqid,cmd,buf)int msqid; /*消息队列关键字*/int cmd ; /控制命令*/struct msqid_ds *buf; /*指向消息队列控制块的指针*/参数与功能说明:根据控制命令cmd对msqid消息队列进行相应的控制。参数buf是指向用户程序地址空间中一个msqid_ds结构的指针,以便将相关控制信息在核心和用户地址空间之间进行传送。cmd控制命令的取
《UNIX系统开发-系统调用-进程间高级通信.doc》由会员marr****208分享,可在线阅读,更多相关《UNIX系统开发-系统调用-进程间高级通信.doc》请在金锄头文库上搜索。
2023-02-01 10页
2022-12-10 6页
2022-09-23 27页
2024-03-16 37页
2023-09-16 10页
2023-12-09 7页
2023-07-25 9页
2022-11-08 4页
2023-02-20 21页
2023-03-20 107页