基本概念:
linux管道(也叫无名管道)由pipe函数创建,提供一个单路(单向)数据流。(注:linux不支持全双工的管道,某些系统支持)
PIPE(2) Linux Programmer's Manual PIPE(2)
NAME
pipe, pipe2 - create pipe
SYNOPSIS
#include <unistd.h>
int pipe(int pipefd[2]);
返回:若成功则为0,若出错则为-1
该函数返回两个文件描述符:fd[0]和fd[1]。前者打开来读,后者打开来写。
管道的典型用途是以下述方式为两个不同进程(一个是父进程,一个是子进程)提供进程间通信的手段。首先,由一个进程(它将成为父进程)创建一个管道后调用fork派生一个自身的副本,如图4-3所示:
接着,父进程关闭这个管道的读出端,子进程关闭同一管道的写入端。这就在父子进程间提供了一个单向数据流,如图4-4所示:
我们在某个shell中输入一个像下面这样的命令时:
who | sort | lp
该shell将执行上述步骤创建三个进程和其间的两个管道。它还把每个管道的读出端复制到相对应进程的标准输入,把每个管道的写入端复制到相应进程的标准输出。图4-5展示了这样的管道线:

最低0.47元/天 解锁文章
261

被折叠的 条评论
为什么被折叠?



