[Linux]管道的建立和使用

1、管道由函数pipe建立,只能提供单向的数据传递的数据传送。shell

格式:函数

#include <unistd.h>blog

int pipe(int fd[2]);进程

fd为两个文件描述符:fd[0]用来读,fd[1]用来写。ip

1.父子进程的单向通讯方式以下图:get

image

一个进程建立一个管道——>派生一个自身的拷贝——>父进程关闭管道的读出端,子进程的写入端关闭(上图中的虚线)——>父子进程就创建了单向通讯了。it

2.父子进程的双向通讯方式以下图:pip

image

建立管道1(fd1[0],fd1[1])和管道2(fd2[0],fd2[1])——>派生出一个子进程——>io

父进程关闭管道1的读出端(fd1[0])和管道2的写入端(fd2[1]);stream

子进程关闭管道1的写入端(fd1[1])和管道2的读入端(fd2[0])。

【实例】:

 

2、popen和pclose函数

popen函数用来建立一个管道并启动另一个进程,该进程能够向管道中写入,也能够向管道中读出。

格式:

#include <stdio.h>

PLE *popen(const char *command, const char *type);

int pclose(FILE *stream);

poen函数会在调用进程和所指定的命令之间建立一个管道。

pclose函数关闭popen建立的标准I/O流,等待其中的命令终止,而后返回shell的终止状态。

相关文章
相关标签/搜索