电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

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

7页
  • 卖家[上传人]:marr****208
  • 文档编号:134460596
  • 上传时间:2020-06-05
  • 文档格式:DOC
  • 文档大小:57KB
  • / 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控制命令的取

      5、值及含义如下: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; /*共享内存段

      6、最后修改时间*/; shmget系统调用的格式#include #include #include 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 #include #include int shmat(shmid,addr,shmflg)int shmid; /*共享内存段标志符*/char *addr; /*用

      7、户指定的一个进程虚拟空间的地址,该共享内存段附在这个地址之后*/int shmflg; /*创建标志和访问方式(类似于文件访问权限)*/参数与功能说明:shmat调用将标志符为shmid的共享内存段映射到进程的虚拟数据空间中,其首地址与参数addr有关。Shmflg为映射标志,说明以何种方式映射及映射到何处。Shmat正常返回该共享内存段在进程虚拟数据空间中的首地址,并且共享内存段访问计数加一;错误返回-1。shmdt系统调用的格式#include #include #include int shmdt(addr)char *addr; /*用户指定的一个进程虚拟空间的地址,该共享内存段附在这个地址之后*/参数与功能说明:shmdt调用将共享内存段脱离到进程的虚拟数据空间中,参数addr是shmat的返回值。shmdt正常返回0,并且共享内存段访问计数减一;错误返回-1。shmctl系统调用的格式#include #include #include int shmctl(shmid,cmd,buf)int shmid; /*共享内存段关键字*/int cmd ; /控制命令*/stru

      8、ct 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 #include #include int semget(key,nsems,shmflg)key_t key; /*信号量组关键字*/int nsems; /*信号量组 个数*/int shmflag; /*创建标志和访问方式(类似于文件访问权限)*/参数与功能说明:semget用来创建一个信号量组,其中包含了nsems个信号量,他们的编号是0nsems-1。信号量组的创建方式及访问权限由semflg决定,其取值与含义与msgget中的msgflg类似。semop系统调用的格式#

      《UNIX系统开发-系统调用-进程间高级通信.doc》由会员marr****208分享,可在线阅读,更多相关《UNIX系统开发-系统调用-进程间高级通信.doc》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    监控施工 信息化课堂中的合作学习结业作业七年级语文 发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.