Bootstrap

进程间通信---管道

管道分为无名管道(只能在具有公共祖先的两个进程中使用----父子进程)和有名管道(可用于不同进程)

管道特点:

  1. 半双工,数据在同一时刻只能在同一方向流动
  2. 数据只能从一端写入一端读出(先入先出)
  3. 管道不是普通的文件,不属于某个文件系统,其只存在于内存中。

无名管道

通过pipe函数创建无名管道

参数: 

pipefd : 为 int 型数组的首地址,其存放了管道的文件描述符 pipefd[0]、pipefd[1]。

当创建一个管道它会创建两个文件描述符fd[0]和fd[1]   

  • fd[0]用于读管道
  • fd[1]用于写管道

一般的IO函数都可以用来操作管道(lseek()除外----因为管道先进先出特点 )

成功   返回0

失败   返回-1

 单个进程管道

 

#include<stdio.h>    
#include<unistd.h>    
int main()    
{    
    int fd[2];    
    int ret=-1;    
    char buf[1
;