书签 分享 收藏 举报 版权申诉 / 30
上传文档赚钱

类型Linux编程与应用课件:08第08章 进程间通信-管道和信号.ppt

  • 上传人(卖家):罗嗣辉
  • 文档编号:2046052
  • 上传时间:2022-01-21
  • 格式:PPT
  • 页数:30
  • 大小:823KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《Linux编程与应用课件:08第08章 进程间通信-管道和信号.ppt》由用户(罗嗣辉)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    Linux 编程 应用 课件 08 进程 通信 管道 信号
    资源描述:

    1、第8章进程间通信管道和信号 进程间通信进程间通信PIPE 进程间通信进程间通信FIFO 信号中断处理信号中断处理 2022-1-202管道示例 2022-1-203创建无名管道 2022-1-204文件描述符重定向 (1)cattest02test02 2error test02 1&2 test02test012022-1-205dup() / dup2() 2022-1-206复制文件描述符 2022-1-207实现who|sort 即使用无名管道将执行who命令的进程与执行sort命令的进程联系在一起,将当前系统用户信息按排序方法输出。 过程及示例代码见教材。2022-1-208流重定向

    2、 第8章进程间通信管道和信号 进程间通信进程间通信PIPE 进程间通信进程间通信FIFO 信号中断处理信号中断处理 2022-1-2010FIFO应用示例2022-1-2011管道示例2022-1-2012创建FIFO2022-1-2013应用示例亲缘关系进程使用有名管道通信应用实例 见教材。非亲缘关系进程使用有名管道通信应用实例 见教材。2022-1-2014管道基本特点总结 两类型管道具有以下特点:(1)管道是特殊类型的文件,在满足先入先出的原则条件下可能进行读写,但不能定位读写位置。(2)管道是单向的,要实现双向,需要两个管道。无名管道只能实现亲缘关系进程间通信(即无名管道的两个文件描述

    3、符可以被两者都访问到),而有名管道以磁盘文件的方式存在,可以实现本机任意两进程间通信。(3)无名管道阻塞问题。无名管道无须显式打开,创建时直接返回文件描述符,而在读写时需要确实对方的存在,否则将退出。即如果当前进程向无名管道的写数据时,必须确定其别一端为某个进程(这个进程可以是当前进程)拥有,即有一个(或多个)进程的文件描述符表中至少有一个成员指向管道的另一端(显然,能够读写管道当前端,则本端在当前进程中是可以访问的)。如果写入无名管道的数据超过其最大值,写操作将阻塞,如果管道中没有数据,读操作将阻塞,如果管道发现另一端断开(另一端文件描述符关闭),将自动退出。(4)有名管道阻塞问题。有名管道

    4、在打开时需要确实对方的存在,否则将阻塞。即以读方式打开某管道,该操作得以继续执行的条件是:在此之前,已经有一个进程以写的方式打开此管道,否则阻塞,直到条件满足,因此有名管道将阻塞在打开位置。也可以以读写(ORDWR)方式打开有名管道,进程能够继续执行(不阻塞),只是这样操作没有什么意思,即当前进程读,当前进程写。第8章进程间通信管道和信号 进程间通信进程间通信PIPE 进程间通信进程间通信FIFO 信号中断处理信号中断处理 2022-1-2016Linux常见信号与处理 2022-1-2017信号的处理流程 (1)信号被某个进程产生,并设置此信号传递的对象(一般为对应进程的pid),然后传递给

    5、操作系统;(2)操作系统根据接收进程的设置(是否阻塞)而选择性的发送给接收者,如果接收者阻塞该信号(且该信号是可以阻塞的),操作系统将暂时保留该信号,而不传递,直到该进程解除对此信号的阻塞(如果对应进程已经退出,则丢弃此信号);如果对应进程没有阻塞,操作系统将传递此信号;(3)目的进程接收到此信号后,将根据当前进程对此信号设置的预处理方式,暂时终止当前代码的执行,保护上下文(主要包括临时寄存器数据、当前程序位置以及当前CPU的状态)、转而执行中断服务程序,执行完成后再恢复到被中断的位置。当然,对于可抢占式内核,在中断返回时还将引发新的调度。 2022-1-2018可能的信号来源 2022-1-

    6、2019kill产生一个信号 2022-1-2020raise自举一个信号 2022-1-2021alarm()定时 2022-1-2022ualarm定时 2022-1-2023信号处理与signal安装信号 信号处理办法 (1)忽略此信号。大多数信号都可使用这种方式进行处理,但有两种信号不能被忽略,SIGKILL和SIGSTOP。这两种信号不能被忽略的原因是:它们向超级用户提供一种使进程终止或停止的可靠方法。 (2)捕捉信号。通知内核在某种信号发生时调用一个用户函数。在用户函数中,可执行用户希望对这种事件进行的处理,这需要安装此信号。例如捕捉到SIGCHLD信号,则表示子进程已经终止,所以

    7、此信号的捕捉函数可以调用waitpid()以取得该子进程的进程PID以及它的终止状态和资源。 (3)执行系统默认操作。Linux系统对任何一个信号都规定了一个默认的操作。 2022-1-2024signal安装信号 2022-1-2025sigaction安装信号 2022-1-2026struct sigaction 2022-1-2027信号集与屏蔽信号 中断是可以被屏蔽(阻塞)的(部分硬件中断是必须立即处理的,例如复位中断),因此,Linux的信号是可以屏蔽,即阻塞信号。但这与前面提到的忽略是有区别的。信号忽略:系统仍然传递该信号,只是相应进程对该信号不作任何处理而已。信号阻塞:系统不传递该信号,显示该进程无法接收到该信号直到进程的信号集发生改变。2022-1-2028sigprocmask设置进程阻塞的信号集 2022-1-2029等待信号 2022-1-2030信号应用示例 -基本功能创建了两个进程: 父亲进程执行文件拷贝操作(为验证此程序,请选择大小在M级以上文件),如果接收到SIGUSR1信号,将打印出当前的拷贝进度,因此,父亲进程需要安装SIGUSR1信号; 子进程每隔一个固定时间(其时间由ularm函数产生SIGALRM信号来决定)向父亲进程发送SIGUSR1信号。因此,子进程需要安装SIGALRM信号。代码见教材。

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:Linux编程与应用课件:08第08章 进程间通信-管道和信号.ppt
    链接地址:https://www.163wenku.com/p-2046052.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库