- 1、本文档共17页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第8章 进程间通信 8.1 管道 8.1.1什么是管道 通常,一个管道由一个进程创建,然后该进程调用fork,此后父、子进程之间就可应用该管道进行通信了。例如,可以一个进程向管道实行写操作,而另一个进程向管道读操作。 8.1 管道 8.1.2 popen和pclose函数 1. popen函数 #include stdio.h FILE *popen(const char *cmdstring, const char *type); popen函数与system函数类似,popen函数会调用fork()产生子进程,然后从子进程中调用/bin/sh –c来执行参数command的指令。 8.1 管道 8.1.2 popen和pclose函数 2. pclose函数 #include stdio.h int pclose(FILE *stream) ; pclose函数可以用来关闭由popen函数所建立的管道以及相关联的文件流。 8.1 管道 8.1.3 命名管道FIFO FIFO即命名管道,是一种用于进程间通信的特殊文件。FIFO是一种文件类型,可查看stat结构(参考6.1.1小节)的成员st_mode,以判断文件类型是否为FIFO。 一般管道没有名字,只能用于具有亲缘关系的进程间通信,而命名管道则无此限制。 #include sys/types.h #include sys/stat.h int mkfifo(const char *pathname, mode_t mode) ; 在程序中,mkfifo函数常用于创建FIFO文件。 实例fifo.c。 8.1 管道 8.1.3 命名管道FIFO 下面介绍FIFO的两种用途: (1) 命令行使用方式。 (2)程序使用方式。 实例fifo_client.c、fifo_server.c。 8.2 信号量 8.2.1 什么是信号量 信号量用于进程同步的控制。 信号量是一种特殊的变量,除初始化外,对这些变量只能进行两种原子操作:等待(wait)和信号(signal)。 P(sv): while (sv = 0) do nothing; sv = sv-1; V(sv):sv = sv+1; 8.2 信号量 8.2.2 信号量的相关函数 1.semget函数 可以通过semget函数创建一个新的信号量或者存取一个已存在的信号量。 #include sys/types.h #include sys/ipc.h #include sys/sem.h int semget(key_t key, int num_sems, int sem_flags); 8.2 信号量 8.2.2 信号量的相关函数 2.semop函数 semop函数的作用是改变信号量的关键字值。 #include sys/types.h #include sys/ipc.h #include sys/sem.h int semop(int sem_id, struct sembuf *sem_ops, size_t num_sem_ops); 8.2 信号量 8.2.2 信号量的相关函数 3.semctl函数 semctl函数用来执行在信号量上的控制操作,这和下一节将要介绍的消息队列中的系统调用函数msgctl十分相似。 #include sys/types.h #include sys/ipc.h #include sys/sem.h int semctl(int sem_id, int sem_num, int command, union semun arg); 8.2.3 信号量实例 8.3 消息队列 8.3.1消息队列 消息队列是一个用于存放消息的链接表,该表由内核进行维护及存储并由消息队列ID标识。消息队列在多进程间通信的应用,示意如图8-2所示。 消息队列可以通过一个消息的类型来索引指定的数据,它在数据流的概念上扩展了数据传送的概念,可以根据需要只读取指定数据,这点是命名管道和FIFO所不能比拟的。 8.3 消息队列 8.3.2消息队列的相关函数 1.msgget函数 msgget函数用于创建一个新队列或打开一个现存的消息队列。 #include sys/types.h #include sys/ipc.h #include sys/msg.h int msgget(key_t key, int msgflg); 8.3 消息队列 8.3.2消息队列的相关函数 2.msgsnd函数 msgsnd函数用于将一条消息发送到消息队列里去。 #include sys/types.h
您可能关注的文档
- Java程序设计实例教程 魏先民-课件和源代码 第1章新.ppt
- Java程序设计实例教程 魏先民-课件和源代码 第2章新.ppt
- Java程序设计实例教程 魏先民-课件和源代码 第3章新.ppt
- Java程序设计实例教程 魏先民-课件和源代码 第4章新.ppt
- Java程序设计实例教程 魏先民-课件和源代码 第5章新.ppt
- Java程序设计实例教程 魏先民-课件和源代码 第6章新.ppt
- Java程序设计实例教程 魏先民-课件和源代码 第7章新.ppt
- Java程序设计实例教程 魏先民-课件和源代码 第8章新.ppt
- Java程序设计实用教程 赵欢 第2章 创建基于web的Java程序新.ppt
- Java程序设计实用教程 赵欢 第3章 组件与布局管理器新.ppt
最近下载
- 一种磁珠法无醇核酸提取试剂盒及其提取方法.pdf VIP
- 项目管理机构设置及人员配备.pdf VIP
- 2022年广西高考英语试题和答案(文字版) .pdf VIP
- 2025年天津市专业技术人员公需考试试题-为中国式现代化提供强大动力和制度保障——党的二十届三中全会暨《中共中央关于进一步全面深化改革、推进中国式现代化的决定》总体解读.docx VIP
- 读书伴我快乐成长(四年级主题班会).ppt VIP
- 二元Logistic回归教程文件.ppt VIP
- 呼吸内科护士理论考试题附答案.doc
- 2015年6月大学英语四级考试真题.doc VIP
- 《中国考古学 III》课件:3_1 秦代墓葬.ppt
- 中华中医药学会体质辨识标准——体质分类与判定.pdf VIP
文档评论(0)