1 / 7
文档名称:

UNIX系统开发-系统调用-进程间高级通信.doc

格式:doc   页数:7
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

UNIX系统开发-系统调用-进程间高级通信.doc

上传人:管理资源吧 2012/2/6 文件大小:0 KB

下载得到文件列表

UNIX系统开发-系统调用-进程间高级通信.doc

文档介绍

文档介绍:UNIX系统开发-系统调用-进程间高级通信
基本上所有的系统调用成功时返回0或正数,失败时返回负值。
消息通信
每个消息队列都有一个msqid_ds类型的控制结构,该结构中包括对消息队列的访问权限,其数据结构如下:
struct msqid_ds
{
struct 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 <sys/>
#include <sys/>
#include <sys/>
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 <sys/>
#include <sys/>
#include <sys/>
int msgsnd(msqid,msgp,msgsz,msgflg)
int msqid; /*消息队列关键字*/
struct msgbuf msgp; /指向消息缓冲的指针*/
int msgsz,msgflg; /*消息大小、发送标志*/
参数与功能说明:
发送一个消息到相关的消息队列上。其中msgp指向消息结构,他的基本格式是:
struct msgbuf
{
int mtype; /*消息类型*/
char mtext[];/*消息正文*/
}
msgflg具体含义为:
msgflg&IPC_NOWAIT为真,那么如果操作条件不满足,则出错返回-1;
msgflg&IPC_NOWAIT为假,那么如果操作条件不满足,则睡眠等待。;
msgrcv系统调用的格式
#include <sys/>
#includ