pipe管道定义(笔记)

Linux系统下进程间通信定义

进程间通信

  • 进程是一个独立的资源分配单元,不同进程之间的资源是独立的,没有关联,不能在一个进程中直接访问另一个进程的资源(例如打开的文件描述符)
  • 进程不是孤立的,不同的进程需要进行信息的交互和状态的传递等,因此需要进程间通信。

就好比一个人身体器官不能共享给另一个人,但我们需要和其他人交流

进程间通信功能

  1. 数据传输:一个进程需要将它的数据发送给另一个 进程。
  2. 资源共享:多个进程之间共享同样的资源。
  3. 通知事件:一个进程需要向另一个或一组进程发送 消息,通知它们发生了某种事件。
  4. 通知事件:一个进程需要向另一个或一组进程发送消息,通知它们发生了某种事件。
  5. 进程控制:有些进程希望完全控制另一个进程的执 行(如Debug进程),此时控制进程希望能够拦截 另一个进程的所有操作,并能够及时知道它的状态改变

Linux操作系统支持的主要进程间通信的通信机制

ppt

管道(pipe)

管道概述

管道(pipe)又称无名管道。
无名管道是一种特殊类型的文件,在应用层体现为两个打开的文件描述符。

特点

  • 半双工,数据在同一时刻只能在一个方向上流动
  • 管道不是普通的文件,不属于某个文件系统,其只存在于内存中。
  • 管道没有名字,只能在具有公共祖先的进程之间使用。
  • 管道的缓冲区是有限的。管道是一个固定大小的缓冲区。在Linux中,该缓冲区的大小为4Kbyte。
  • 管道所传送的数据是无格式的,这要求管道的读出方与写入方必须事先约定好数据的格式,如多少字节算一个消息等。
  • 数据只能从管道的一端写入,从另一端读出。
  • 从管道读数据是一次性操作,数据一旦被读走,它就从管道中被抛弃,释放空间以便写更多的数据。

管道的创建

int pipe

int pipe(int fd[2]);  //管道由pipe函数创建,参数是两个整形数组0 1

经由参数fd返回两个文件描述符fd[0]和fd[1],
fd[1]代表管道write端
fd[0]代表管道read端
fd[1]的输出是fd[0]的输入
返回值:
成功: 返回0
失败: 返回-1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值