管道---pipe函数实例讲解

简介:        linux程序设计,很多的开源软件中都会用到管道技术,而管道技术中pipe用的叫频繁,这几天正在看一个软件的源码,同样里面用到了pipe函数,所以驻足,编写此文档,用以加深印象。

       linux程序设计,很多的开源软件中都会用到管道技术,而管道技术中pipe用的叫频繁,这几天正在看一个软件的源码,同样里面用到了pipe函数,所以驻足,编写此文档,用以加深印象。

一、管道具有以下特点:

  • 管道是半双工的,数据只能向一个方向流动;需要双方通信时,需要建立起两个管道;
  • 只能用于父子进程或者兄弟进程之间(具有亲缘关系的进程);
  • 单独构成一种独立的文件系统:管道对于管道两端的进程而言,就是一个文件,但它不是普通的文件,它不属于某种文件系统,而是自立门户,单独构成一种文件系统,并且只存在与内存中。
  • 数据的读出和写入:一个进程向管道中写的内容被管道另一端的进程读出。写入的内容每次都添加在管道缓冲区的末尾,并且每次都是从缓冲区的头部读出数据。

二、 管道的基本原理图

      
三、管道的读写规则
      
四、 实例代码
      
      
五、编译运行
     

本文结束

目录
相关文章
|
6月前
|
Unix Linux Python
`subprocess`模块是Python中用于生成新进程、连接到它们的输入/输出/错误管道,并获取它们的返回(退出)代码的模块。
`subprocess`模块是Python中用于生成新进程、连接到它们的输入/输出/错误管道,并获取它们的返回(退出)代码的模块。
|
8月前
|
监控 网络协议 iOS开发
Signal 13 was raised(SIGPIPE管道破裂)
Signal 13 was raised(SIGPIPE管道破裂)
128 0
python-- 进程管道 Pipe、进程 Manager
python-- 进程管道 Pipe、进程 Manager
56 # 实现 pipe 方法进行拷贝
56 # 实现 pipe 方法进行拷贝
62 0
|
存储 Go
Golang中的管道(channel) 、goroutine与channel实现并发、单向管道、select多路复用以及goroutine panic处理
Golang中的管道(channel) 、goroutine与channel实现并发、单向管道、select多路复用以及goroutine panic处理
517 0
|
Go
Go channel被关闭时的广播机制,以及遍历未关闭channel时会导致死锁阻塞问题
Go channel被关闭时的广播机制,以及遍历未关闭channel时会导致死锁阻塞问题
187 0
|
缓存 Go 调度
管道(Channel)的读取与写入「让我们一起Golang」
管道(Channel)的读取与写入「让我们一起Golang」
1710 0
|
Linux Shell
详解linux进程间通信-管道 popen函数 dup2函数
  前言:进程之间交换信息的唯一方法是经由f o r k或e x e c传送打开文件,或通过文件系统。本章将说明进程之间相互通信的其他技术—I P C(InterProcess Communication)。
1606 0