linux编程及应用任继平08 进程间通信-管道和信号

管道示例 牛牛文库文档分享创建无名管道 牛牛文库文档分享文件描述符重定向 (1)cattest02test02 2>error test02 1&2 test02< 牛牛文库文档分享dup() / dup2() 牛牛文库文档分享复制文件描述符 牛牛文库文档分享实现who|sort 即使用无名管道将执行who命令的进程与执行sort命令的进程联系在一起,将当前系统用户信息按排序方法输出。 过程及示例代码见教材。 牛牛文库文档分享流重定向 牛牛文库文档分享第8章 进程间通信-管道和信号 1进程间通信-PIPE 2进程间通信―FIFO 3信号中断处理 牛牛文库文档分享FIFO应用示例 牛牛文库文档分享管道示例 牛牛文库文档分享创建FIFO 牛牛文库文档分享应用示例亲缘关系进程使用有名管道通信应用实例 见教材。非亲缘关系进程使用有名管道通信应用实例 见教材。 牛牛文库文档分享管道基本特点总结 两类型管道具有以下特点:(1)管道是特殊类型的文件,在满足先入先出的原则条件下可能进行读写,但不能定位读写位置。(2)管道是单向的,要实现双向,需要两个管道。无名管道只能实现亲缘关系进程间通信(即无名管道的两个文件描述符可以被两者都访问到),而有名管道以磁盘文件的方式存在,可以实现本机任意两进程间通信。(3)无名管道阻塞问题。无名管道无须显式打开,创建时直接返回文件描述符,而在读写时需要确实对方的存在,否则将退出。即如果当前进程向无名管道的写数据时,必须确定其别一端为某个进程(这个进程可以是当前进程)拥有,即有一个(或多个)进程的文件描述符表中至少有一个成员指向管道的另一端(显然,能够读写管道当前端,则本端在当前进程中是可以访问的)。如果写入无名管道的数据超过其最大值,写操作将阻塞,如果管道中没有数据,读操作将阻塞,如果管道发现另一端断开(另一端文件描述符关闭),将自动退出。(4)有名管道阻塞问题。有名管道在打开时需要确实对方的存在,否则将阻塞。即以读方式打开某管道,该操作得以继续执行的条件是:在此之前,已经有一个进程以写的方式打开此管道,否则阻塞,直到条件满足,因此有名管道将阻塞在打开位置。也可以以读写(O_RDWR)方式打开有名管道,进程能够继续执行(不阻塞),只是这样操作没有什么意思,即当前进程读,当前进程写。 牛牛文库文档分享第8章 进程间通信-管道和信号 1进程间通信-PIPE 2进程间通信―FIFO 3信号中断处理 牛牛文库文档分享Linux常见信号与处理 牛牛文库文档分享信号的处理流程 (1)信号被某个进程产生,并设置此信号传递的对象(一般为对应进程的pid),然后传递给操作系统;(2)操作系统根据接收进程的设置(是否阻塞)而选择性的发送给接收者,如果接收者阻塞该信号(且该信号是可以阻塞的),操作系统将暂时保留该信号,而不传递,直到该进程解除对此信号的阻塞(如果对应进程已经退出,则丢弃此信号);如果对应进程没有阻塞,操作系统将传递此信号;(3)目的进程接收到此信号后,将根据当前进程对此信号设置的预处理方式,暂时终止当前代码的执行,保护上下文(主要包括临时寄存器数据、当前程序位置以及当前CPU的状态)、转而执行中断服务程序,执行完成后再恢复到被中断的位置。当然,对于可抢占式内核,在中断返回时还将引发新的调度。 牛牛文库文档分享可能的信号来源 牛牛文库文档分享kill产生一个信号 牛牛文库文档分享raise自举一个信号 牛牛文库文档分享alarm()定时 牛牛文库文档分享ualarm定时 牛牛文库文档分享信号处理与signal安装信号 信号处理办法 (1)忽略此信号。大多数信号都可使用这种方式进行处理,但有两种信号不能被忽略,SIGKILL和SIGSTOP。这两种信号不能被忽略的原因是:它们向超级用户提供一种使进程终止或停止的可靠方法。(2)捕捉信号。通知内核在某种信号发生时调用一个用户函数。在用户函数中,可执行用户希望对这种事件进行的处理,这需要安装此信号。例如捕捉到SIGCHLD信号,则表示子进程已经终止,所以此信号的捕捉函数可以调用waitpid()以取得该子进程的进程PID以及它的终止状态和资源。(3)执行系统默认操作。Linux系统对任何一个信号都规定了一个默认的操作。 牛牛文库文档分享signal安装信号 牛牛文库文档分享sigaction安装信号 牛牛文库文档分享struct sigaction 牛牛文库文档分享信号集与屏蔽信号 中断是可以被屏蔽(阻塞)的(部分硬件中断是必须立即处理的,例如复位中断),因此,Linux的信号是可以屏蔽,即阻塞信号。但这与前面提到的忽

linux信号管道,linux编程及应用任继平08 进程间通信-管道和信号.pptx相关推荐

  1. 进程间通信系列 之 信号实例

    进程间通信系列 之 概述与对比  http://blog.csdn.net/younger_china/article/details/15808685  进程间通信系列 之 共享内存及其实例   h ...

  2. 进程间通信系列 之 信号(理论)

    进程间通信系列 之 概述与对比   http://blog.csdn.net/younger_china/article/details/15808685  进程间通信系列 之 共享内存及其实例   ...

  3. Linux进程间通信--进程,信号,管道,消息队列,信号量,共享内存

    Linux进程间通信--进程,信号,管道,消息队列,信号量,共享内存 参考:<linux编程从入门到精通>,<Linux C程序设计大全>,<unix环境高级编程> ...

  4. Linux进程间通信(管道、消息队列、共享内存、信号、信号量)

    目录 Linux进程间通信概述 1.管道 无名管道(pipe) 有名管道(fifo) 2.消息队列(msg) 消息队列的通信原理 消息队列相关api 消息队列收发数据 键值生成 消息队列移除 3.共享 ...

  5. Linux系统编程【文件IO、进程、进程间通信、信号、线程、互斥】

    linux系统编程 个人通过学习,手打了一份48000字的Linux系统编程的笔记,包含了[文件IO.进程.进程间通信.信号.多线程.互斥]等知识点,并给出了大量的代码案例对每个重要的知识点进行了代码 ...

  6. 【嵌入式Linux学习七步曲之第五篇 Linux内核及驱动编程】Linux信号机制分析

    Linux信号机制分析 Sailor_forever  sailing_9806@163.com 转载请注明 http://blog.csdn.net/sailor_8318/archive/2008 ...

  7. 【Linux内核及驱动编程】Linux信号机制分析

    Linux信号机制分析 Sailor_forever sailing_9806@163.com转载请注明 http://blog.csdn.net/sailor_8318/archive/2008/0 ...

  8. linux通过信号回调函数,信号机制的管理结构 - Linux内核中的信号机制_Linux编程_Linux公社-Linux系统门户网站...

    信号只是一个数字,数字为0-31表示不同的信号,如下表所示. 编号 信号名 默认动作 说明 1 SIGHUP 进程终止 终端断开连接 2 SIGINT 进程终止 用户在键盘上按下CTRL+C 3 SI ...

  9. Linux学习之系统编程篇:与信号集有关的函数

    一.自定义信号集 (1)类型:sigset_t (本质是位图) (2)设置自定义信号集方法: sigset_t set; //创建一个自定义信号集sigemptyset(&set); //创建 ...

最新文章

  1. 2021年4月12日 阿里供应链Java研发实习面试(一面)(含总结)
  2. 【 FPGA 】FIR 滤波器的架构
  3. Win10下Wireshark找不到网卡的方法
  4. \x49\x51\x5a\x56\x54\ 这种是什么编码?(16进制编码)
  5. 如何实现android和服务器长连接呢?推送消息的原理
  6. 安装android到u盘安装程序,在u盘内安装android教程
  7. jmeter(二)录制脚本
  8. 干货:排名前16的Java工具类
  9. 《c专家编程》笔记--define和typedef的区别
  10. 多任务管理类 MutilTaskManager
  11. 微服务架构的优缺点_微服务架构DNS服务注册与发现实现原理
  12. 12款很酷的使用大头照的国外名片设计作品
  13. 用postGIS向postgresql插入空间数据
  14. 为什么项目经理比程序员工资高?
  15. Java中dynamic是什么_java中dynamic web project与web project 的区别
  16. IO多路复用底层原理及源码解析
  17. 2.4 矩阵的特征值与特征向量
  18. centos 如何测udp端口是否开放_CentOS如何测试端口是否打开
  19. go项目部署服务器保姆级教程(带图)
  20. 微信公众号开启开发者模式

热门文章

  1. Linux磁盘配额教程,在Linux上创建磁盘配额
  2. 将一个很大的ISO镜像文件分割成单独的两个镜像
  3. Python记录鼠标的点击与拖拽时间并在文本文档中保存记录
  4. 目标检测(三):SSD
  5. C语言实现MD5校验
  6. radius认证服务器无响应 无法完成,客户端认证时提示radius server no response问题的解决方法...
  7. 统一异常处理解决方案
  8. cto 要做什么_CTO会做什么?
  9. Axure—下拉菜单
  10. 输入一个菱形的内高和外高,画出一个空心菱形