第九章 管道.ppt
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第九章 管道 第九
- 资源描述:
-
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,管道,进程间通信概述,无名管道,命名管道,进程间通信,进程间通信,(,IPC:Inter,Processes Communication),进程是一个独立的资源分配单元,不同进程(这里所说的进程通常指的是用户进程)之间的资源是独立的,没有关联,不能在一个进程中直接访问另一个进程的资源(例如打开的文件描述符)。,进程不是孤立的,不同的进程需要进行信息的交互和状态的传递等,因此需要进程间通信。,进程间通信功能:,数据传输:一个进程需要将它的数据发送给另一个进程。,资源共享:多个进程之间共享同样的资源。,通知事件:一个进程需要向另一个或一组进程发送消息,通知它们发生了某种事件。,进程控制:有些进程希望完全控制另一个进程的执行(如,Debug,进程),此时控制进程希望能够拦截另一个进程的所有操作,并能够及时知道它的状态改变。,无名管道,管道,(pipe),又称无名管道。,无名管道是一种特殊类型的文件,在应用层体现为两个打开的文件描述符。,管道是最古老的,UNIX IPC,方式,其特点是,:,1,、半双工,数据在同一时刻只能在一个方向上流动。,2,、数据只能从管道的一端写入,从另一端读出。,3,、写入管道中的数据遵循先入先出的规则。,4,、管道所传送的数据是无格式的,这要求管道的读出方与写入方必须事先约定好数据的格式,如多少字节算一个消息等。,5,、管道不是普通的文件,不属于某个文件系统,其只存在于内存中。,6,、管道在内存中对应一个缓冲区。不同的系统其大小不一定相同。,7,、从管道读数据是一次性操作,数据一旦被读走,它就从管道中被抛弃,释放空间以便写更多的数据。,8,、管道没有名字,只能在具有公共祖先的进程之间使用。,Pipe,函数,#include,int,pipe(int,filedes2);,功能:经由参数,filedes,返回两个文件描述符,参数:,filedes,为,int,型数组的首地址,其存放了管道的文件描述符,fd0,、,fd1,。,filedes0,为读而打开,,filedes1,为写而打开管道,,filedes0,的输出是,filedes1,的输入。,返回值:,成功:返回,0,失败:返回,-1,父子进程通过管道实现数据的传输,01_pipe_1.c,子进程写入管道 父进程从管道中读取,从管道中读数据的特点,1,、默认用,read,函数从管道中读数据是阻塞的。,2,、调用,write,函数向管道里写数据,当缓冲区已满时,write,也会阻塞。,3,、编程时可通过,fcntl,函数设置文件的阻塞特性。,设置为阻塞:,fcntl(fd,F_SETFL,0);,设置为非阻塞:,fcntl(fd,F_SETFL,O_NONBLOCK);,01_pipe_2.c,带阻塞和不带阻塞,文件描述符概述,文件描述符是非负整数,是文件的标识。,用户使用文件描述符(,file descriptor,)来访问文件。,利用,open,打开一个文件时,内核会返回一个文件描述符。,每个进程都有一张文件描述符的表,进程刚被创建时,标准输入、标准输出、标准错误输出设备文件被打开,对应的文件描述符,0,、,1,、,2,记录在表中。,在进程中打开其他文件时,系统会返回文件描述符表中最小可用的文件描述符,并将此文件描述符记录在表中。,注意:,Linux,中一个进程最多只能打开,NR_OPEN_DEFAULT,(即,1024,)个文件,故当文件不再使用时应及时调用,close,函数关闭文件。,练习,题目,:,实现,ls,-help|more,功能,提示:,ls,-help,是个外部命令,它向标准输出打印,ls,的帮助文档。,more,是个外部命令,它默认是从标准输入中获取输入,并分屏显示到屏幕上。,在使用,shell,命令时,可使用管道“”将两个命令连接起来。,用管道“”将两个命令连接后:,提示:,创建一个管道以便让,ls,-help,的输出和,more,的输入可以联系起来。,子进程,exec,执行,ls,-help,命令之前重定向“标准输出”到“管道写端”。,父进程,exec,执行,more,命令之前重定向“标准输入”到“管道读端”。,命名管道,命名管道,(FIFO),和管道,(pipe),基本相同,但也有一些显著的不同,其特点是,:,1,、半双工,数据在同一时刻只能在一个方向上流动。,2,、写入,FIFO,中的数据遵循先入先出的规则。,3,、,FIFO,所传送的数据是无格式的,这要求,FIFO,的读出方与写入方必须事先约定好数据的格式,如多少字节算一个消息等。,4,、,FIFO,在文件系统中作为一个特殊的文件而存在,但,FIFO,中的内容却存放在内存中。,5,、管道在内存中对应一个缓冲区。不同的系统其大小不一定相同。,6,、从,FIFO,读数据是一次性操作,数据一旦被读,它就从,FIFO,中被抛弃,释放空间以便写更多的数据。,7,、当使用,FIFO,的进程退出后,,FIFO,文件将继续保存在文件系统中以便以后使用。,8,、,FIFO,有名字,不相关的进程可以通过打开命名管道进行通信。,FIFO,文件的创建,#include,#include,int,mkfifo,(const char*pathname,mode_t,mode);,参数:,pathname,:,FIFO,的路径名,+,文件名。,mode,:,mode_t,类型的权限描述符。,返回值:,成功:返回,0,失败:如果文件已经存在,则会出错且返回,-1,。,有名管道,操作,FIFO,文件时的特点,系统调用的,I/O,函数都可以作用于,FIFO,,如,open,、,close,、,read,、,write,等。,打开,FIFO,时,非阻塞标志,(O_NONBLOCK),产生下列影响,:,特点一:,不指定,O_NONBLOCK(,即,open,没有位或,O_NONBLOCK),1,、,open,以只读方式打开,FIFO,时,要阻塞到某个进程为写而打开此,FIFO,2,、,open,以只写方式打开,FIFO,时,要阻塞到某个进程为读而打开此,FIFO,。,3,、,open,以只读、只写方式打开,FIFO,时会阻塞,调用,read,函数从,FIFO,里读数据时,read,也会阻塞。,4,、通信过程中若写进程先退出了,则调用,read,函数从,FIFO,里读数据时不阻塞;若写进程又重新运行,则调用,read,函数从,FIFO,里读数据时又恢复阻塞。,5,、通信过程中,读进程退出后,写进程向命名管道内写数据时,写进程也会(收到,SIGPIPE,信号)退出。,6,、调用,write,函数向,FIFO,里写数据,当缓冲区已满时,write,也会阻塞。,02_fifo_read_1.c,从管道中读取,02_fifo_write_1.c,写入管道,练习,题目:实现单机,QQ,聊天,提示:,父进程创建子进程,实现多任务。,父进程负责发信息,(,向,FIFO,里写数据,),,子进程负责接收信息,(,从,FIFO,里读数据,),。,打开命名管道的用阻塞的方法打开。,QQ,聊天框架及流程图,展开阅读全文
咨信网温馨提示:1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。




第九章 管道.ppt



实名认证













自信AI助手
















微信客服
客服QQ
发送邮件
意见反馈



链接地址:https://www.zixin.com.cn/doc/13090825.html