第11章 进程间通信(1)_管道

发布时间:2017-3-27 7:31:45编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"第11章 进程间通信(1)_管道 ",主要涉及到第11章 进程间通信(1)_管道 方面的内容,对于第11章 进程间通信(1)_管道 感兴趣的同学可以参考一下。

1. 进程间通信概述

(1)概述

  ①数据传输:一个进程需要将它的数据发送给另一个进程,发送的数据量在一个字节到几兆字节之间。

  ②共享数据:多个进程想要操作共享数据,一个进程对共享数据的修改,别的进程应该立刻看到。

  ③通知事件:一个进程需要向另一个(组)进程发送消息,通知它们发生了某种事件(如进程终止时要通知父进程)。

  ④资源共享:多个进程之间共享同样的资源。为了做到这一点,需要内核提供锁和同步机制。

  ⑤进程控制:有些进程希望完全控制另一个进程的执行(如Degub进程),此时控制进程希望能够拦截另一个进程的所有陷入和异常,并能够及时知道它的状态改变。

(2)现代的进程间通信方式

  ①管道(pipe)和命名管理(FIFO)    ②信号(signal)    ③消息队列    ④共享内存    ⑤信号量    ⑥套接字(socket)

2. 管道通信

2.1 概述

(1)管道是针对本地计算机的两个进程之间的通信而设计的通信方法,管道建立后,实际获得的是两个文件描述符一个用于读取,另一个用于写入

(2)最常见的IPC机制,通过pipe系统调用

(3)管道是单工的,数据只能向一个方向流动,需要双向通信时,需要建立起两个管道。

(4)数据的读出和写入:一个进程向管道中写的内容被管道另一端的进程读出。写入的内容每次都添加在管道缓冲区的末尾,并且每次都是从缓冲区的头部读出数据(即读取的顺序应与写入的顺序一致

2.2 管道的分类和读写

(1)管道的分类

  ①匿名管道:

    A.在关系进程中进程(父进程和子进程,兄弟进程之间)

    B.由pipe系统调用,管道由父进程建立

    C.管道位于内核空间,其实是一块缓存

  ②命名管道(FIFO):

    A.两个没有任何关系的进程之间通信可通过命名管道进行数据传输,本质上是内核中一块缓存,另在文件系统中以一个特殊的设计文件(管道文件)存在

    B.通过系统调用mkfifo创建。

(2)管道的创建: 


上一篇:iOS-----openGL--openGL ES iOS 入门篇4---> 离屏渲染
下一篇:geoserver 数据图层输出格式

相关文章

相关评论

本站评论功能暂时取消,后续此功能例行通知。

一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!

二、互相尊重,对自己的言论和行为负责。

好贷网好贷款