电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本
换一换
首页 金锄头文库 > 资源分类 > DOC文档下载
分享到微信 分享到微博 分享到QQ空间

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

  • 资源ID:134460596       资源大小:57KB        全文页数:7页
  • 资源格式: DOC        下载积分:10金贝
快捷下载 游客一键下载
账号登录下载
微信登录下载
三方登录下载: 微信开放平台登录   支付宝登录   QQ登录  
二维码
微信扫一扫登录
下载资源需要10金贝
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
支付方式: 支付宝    微信支付   
验证码:   换一换

 
账号:
密码:
验证码:   换一换
  忘记密码?
    
1、金锄头文库是“C2C”交易模式,即卖家上传的文档直接由买家下载,本站只是中间服务平台,本站所有文档下载所得的收益全部归上传人(卖家)所有,作为网络服务商,若您的权利被侵害请及时联系右侧客服;
2、如你看到网页展示的文档有jinchutou.com水印,是因预览和防盗链等技术需要对部份页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有jinchutou.com水印标识,下载后原文更清晰;
3、所有的PPT和DOC文档都被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;下载前须认真查看,确认无误后再购买;
4、文档大部份都是可以预览的,金锄头文库作为内容存储提供商,无法对各卖家所售文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;
5、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据;
6、如果您还有什么不清楚的或需要我们协助,可以点击右侧栏的客服。
下载须知 | 常见问题汇总

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

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 <sys/types.h>#include <sys/ipc.h>#include <sys/msg.h>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/types.h>#include <sys/ipc.h>#include <sys/msg.h>int msgsnd(msqid,msgp,msgsz,msgflg)int msqid; /*消息队列关键字*/struct msgbuf msgp; /指向消息缓冲的指针*/int msgsz,msgflg; /*消息大小、发送标志*/参数与功能说明:发送一个消息到相关的消息队列上。其中msgp指向消息结构,他的基本格式是:struct msgbufint mtype; /*消息类型*/char mtext;/*消息正文*/msgflg具体含义为:msgflg&IPC_NOWAIT为真,那么如果操作条件不满足,则出错返回-1;msgflg&IPC_NOWAIT为假,那么如果操作条件不满足,则睡眠等待。;msgrcv系统调用的格式#include <sys/types.h>#include <sys/ipc.h>#include <sys/msg.h>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为真,那么如果接收的消息没有到达,则出错返回-1;msgflg&IPC_NOWAIT为假,那么如果接收的消息没有到达,则睡眠等待。;msgflg&MSG_NOERROR为真,那么如果msgrcv中的msgsz参数小于所接收的消息正文的长度,则本次可以接收msgsz字节,并且不把这种情况视为出错。msgtyp的取值及含义为:msgtyp>0时,接收消息队列中类型为msgtyp的第一个消息。msgtyp=0时,接收消息队列中的第一个消息。msgtyp<0时,接收消息队列中类型值msgtyp最小且<=|mstyp|的第一个消息。msgctl系统调用的格式#include <sys/types.h>#include <sys/ipc.h>#include <sys/msg.h>int msgctl(msqid,cmd,buf)int msqid; /*消息队列关键字*/int cmd ; /控制命令*/struct msqid_ds *buf; /*指向消息队列控制块的指针*/参数与功能说明:根据控制命令cmd对msqid消息队列进行相应的控制。参数buf是指向用户程序地址空间中一个msqid_ds结构的指针,以便将相关控制信息在核心和用户地址空间之间进行传送。cmd控制命令的取值及含义如下:IPC_STAT:将指定消息队列的控制块信息写到buf结构中。IPC_SET:将buf中信息写到指定消息队列的控制块中。IPC_RMID:删除指定消息队列,释放消息队列标志符。共享内存段 每个共享内存段都有一个shmid_ds类型的控制结构,该结构中包括对共享内存段的访问权限,其数据结构如下:struct shmid_dsstruct ipc_perm shm_perm; /*操作权限结构 */int shm_segsz; /*以字节为单位的共享段大小*/struct region *shm_reg; /*指向共享段的指针*/char pad4; /*系统使用*/ushort shm_lpid; /*最后使用shmop的时间*/ushort shm_cpid; /*创建进程的id*/ushort shm_nattch; /*系统使用*/ushort shm_cnattc; /*系统使用*/time_t shm_atime; /*最后使用shmat的时间*/time_t shm_dtime; /*最后使用shmdt的时间*/time_t shm_ctime; /*共享内存段最后修改时间*/; shmget系统调用的格式#include <sys/types.h>#include <sys/ipc.h>#include <sys/shm.h>int shmget(key,size,shmflg)key_t key; /*共享内存段关键字*/int size; /*共享内存段大小*/int shmflag; /*创建标志和访问方式(类似于文件访问权限)*/参数与功能说明:shmflg低9位类似于文件访问权限的低9位,其他位指明消息队列的建立方式:若指定的关键字消息队列不存在,shmflg&IPC_CREAT为真,则为他建立一个新的消息队列; shmflg&IPC_CREAT为假,返回-1。若指定的关键字消息队列存在,则返回该消息队列的描述符。若shmflg&IPC_CREAT&IPC_EXCL为真,若指定的关键字消息队列不存在,失败返回-1;否则正常返回。若key等于IPC_PRIVATE,则shmget调用总是成功的。shmat系统调用的格式#include <sys/types.h>#include <sys/ipc.h>#include <sys/shm.h>int shmat(shmid,addr,shmflg)int shmid; /*共享内存段标志符*/char *addr; /*用户指定的一个进程虚拟空间的地址,该共享内存段附在这个地址之后*/int shmflg; /*创建标志和访问方式(类似于文件访问权限)*/参数与功能说明:shmat调用将标志符为shmid的共享内存段映射到进程的虚拟数据空间中,其首地址与参数addr有关。Shmflg为映射标志,说明以何种方式映射及映射到何处。Shmat正常返回该共享内存段在进程虚拟数据空间中的首地址,并且共享内存段访问计数加一;错误返回-1。shmdt系统调用的格式#include <sys/types.h>#include <sys/ipc.h>#include <sys/shm.h>int shmdt(addr)char *addr; /*用户指定的一个进程虚拟空间的地址,该共享内存段附在这个地址之后*/参数与功能说明:shmdt调用将共享内存段脱离到进程的虚拟数据空间中,参数addr是shmat的返回值。shmdt正常返回0,并且共享内存段访问计数减一;错误返回-1。shmctl系统调用的格式#include <sys/types.h>#include <sys/ipc.h>#include <sys/shm.h>int shmctl(shmid,cmd,buf)int shmid; /*共享内存段关键字*/int cmd ; /控制命令*/struct shmid_ds *buf; /*指向共享内存段控制块的指针*/参数与功能说明:根据控制命令cmd对shmid所指定的共享内存段进行相应的控制。参数buf是指向用户程序地址空间中一个shmid_ds结构的指针,以便将相关控制信息在核心和用户地址空间之间进行传送。cmd控制命令的取值及含义如下:IPC_STAT:将指定共享内存段的控制块信息写到buf结构中。IPC_SET:将buf中信息写到指定共享内存段的控制块中。IPC_RMID:删除指定共享内存段,释放共享内存段标志符。SHM_LOCK:将共享内存段锁定在内存,禁止换出(只有特权用户才能这样用)SHM_UNLOCK:将共享内存段解锁,允许换出(只有特权用户才能这样用)信号量 每个信号量组都有一个semid_ds类型的控制结构,该结构中包括对信号量组的访问权限,其数据结构如下:struct semid_dsstruct ipc_perm sem_perm; /*操作权限结构 */struct sem sem_base; /*指向信号量组的第一个信号量*/ushort sem_nsems; /*信号量数*/time_t sem_otime; /*最后使用semop的时间*/time_t sem_ctime; /*共享内存段最后修改时间*/; semget系统调用的格式#include <sys/types.h>#include <sys/ipc.h>#include <sys/sem.h>int semget(key,nsems,shmflg)key_t key; /*信号量组关键字*/int nsems; /*信号量组 个数*/int shmflag; /*创建标志和访问方式(类似于文件访问权限)*/参数与功能说明:semget用来创建一个信号量组,其中包含了nsems个信号量,他们的编号是0nsems-1。信号量组的创建方式及访问权限由semflg决定,其取值与含义与msgget中的msgflg类似。semop系统调用的格式#

注意事项

本文(UNIX系统开发-系统调用-进程间高级通信.doc)为本站会员(marr****208)主动上传,金锄头文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即阅读金锄头文库的“版权提示”【网址:https://www.jinchutou.com/h-59.html】,按提示上传提交保证函及证明材料,经审查核实后我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.