【Linux系统编程】Linux进程间通信方式---管道

IPC—管道

1.基本概念

管道依据是否有名字分为匿名管道命名管道(有名管道),这两种管道有一定的区别。

(平时只说管道的话,一般指的是匿名管道)

管道有以下几个特点:

  1. 其本质是一个伪文件(实为内核缓冲区);
  2. 由两个文件描述符引用,一个表示读端,一个表示写端;
  3. 规定数据从管道的写端流入管道,从读端流出。

管道有几个重要的限制:

  1. 管道是半双工的,数据只能在一个方向上流动,A进程传给B进程,不能反向传递;
  2. 管道中的数据不能被反复读取。一旦数据被读走,则管道中就不在保留此数据;
  3. 进程不能向管道内自己写入数据,然后自己读出数据。

匿名管道和命名管道的区别:

  1. 匿名管道:即默认的管道,只能用于具有血缘关系的进程间进行通信;
  2. 命名管道:允许没有亲缘关系的进程进行通信。命名管道不同于匿名管道之处在于它提供了一个路径名与之关联,这样一个进程即使与创建有名管道的进程不存在亲缘关系,只要可以访问该路径,就能通过有名管道互相通信。
©️2020 CSDN 皮肤主题: 精致技术 设计师:CSDN官方博客 返回首页