当前位置: 代码迷 >> 综合 >> 3.Linux进程间通信:匿名管道 popen()、pclose()、pipe()、close()、dup()、dup2()
  详细解决方案

3.Linux进程间通信:匿名管道 popen()、pclose()、pipe()、close()、dup()、dup2()

热度:91   发布时间:2023-10-16 00:10:17.0

在前面,介绍了一种进程间的通信方式:使用信号,我们创建通知事件,并通过它引起响应,但传递的信息只是一个信号值。这里将介绍另一种进程间通信的方式——匿名管道,通过它进程间可以交换更多有用的数据。

一、什么是管道

如果你使用过Linux的命令,那么对于管道这个名词你一定不会感觉到陌生,因为我们通常通过符号“|"来使用管道,但是管理的真正定义是什么呢?管道是一个进程连接数据流到另一个进程的通道,它通常是用作把一个进程的输出通过管道连接到另一个进程的输入。

举个例子,在shell中输入命令:ls -l | grep string,我们知道ls命令(其实也是一个进程)会把当前目录中的文件都列出来,但是它不会直接输出,而是把本来要输出到屏幕上的数据通过管道输出到grep这个进程中,作为grep这个进程的输入,然后这个进程对输入的信息进行筛选,把存在string的信息的字符串(以行为单位)打印在屏幕上。

二、使用popen()函数

1、popen()函数和pclose()函数介绍

有静就有动,有开就有关,与此相同,与popen()函数相对应的函数是pclose()函数,它们的原型如下:

#include <stdio.h>
  相关解决方案