【并发编程三】C++实现通信——管道(pipe)
一、管道(pipe)
所谓的管道,就是内核⾥⾯的⼀串缓存(Pipe)。一个进程从管道的⼀端写⼊的数据,实际上是缓存在内核中的,另⼀端读取,也就是从内核中读取这段数据。
- 有两种类型的管道:匿名管道,有名管道(也叫命名管道)
二、匿名管道
1、简介
匿名管道只能用于父子进程间通信 ,不能跨网络通信,并且通信是单向。另外,管道传输的数据是⽆格式的流且⼤⼩受限。
正常情况下,控制台进程的输输入出是在控制台窗口的,但是如果我们在创建子进程的时候指定了其输入输出,那么子进程就会从我们的管道读数据,把输出数据写到我们指定的管道。
这就是我们代码中重定向标准输入的原因,否则system(“pause”)会无效。
2、父子进程:匿名管道的通信过程?
父进程写管道、子进程读管道,过程如下。
- 1、父进程,CreatePipe()创建管