加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_泰州站长网 (http://www.0523zz.com/)- 视觉智能、AI应用、CDN、行业物联网、智能数字人!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

Linux进程间通信(二) 管道通信之无名管道及其基础实验

发布时间:2016-01-19 13:46:44 所属栏目:Linux 来源:网络整理
导读:管道简介 管道是Linux中进程间通信的一种方式,它把一个程序的输出直接连接到另一个程序的输 入(其实我更愿意将管道比喻为农村浇地的管子)。Linux的管道主要包

Linux进程间通信(二) 管道通信之无名管道及其基础实验

使用命令: gcc pipe.c -o pipe编译后,运行:./pipe 可以看到如下结果

Linux进程间通信(二) 管道通信之无名管道及其基础实验

标准流管道

标准流管道函数说明

与Linux的文件操作中有基于文件流的标准I/O操作一样, 管道的操作也支持基于文件流的的模式。这种基于文件流的管道主要是用来创建一个连接到另一个进程的管道 ,这里的"另一个进程"也就是一个可以进行一定操作的可执行文件,例如,用户执行“ls -l”或 者自己编写的程序“./pipe”  等。由于这类操作很常用,因此标准流管道就将一系列的创建过程合并 到一个函数 popen()中完成,它所完成的工作有以下几步:

①  创建一个管道

②  fork()创建一个子进程

③  在父子进程中关闭不需要的文件描述符

④  执行 exec 函数族调用

⑤  执行函数中所指定的命令

这个函数的使用可以大大减少代码的编写 量,但同时也有一些不利之处。例如,它不如前面管道创建的函数那样灵活多变,并且用popen()创建的管道 必须使用标准I/O函数进行操作,而不能使用前面的 read()、write()一类不带缓冲的I/O函数。与之相对应, 关闭用popen()创建的流管道必须使用函数 pclose(),该函数关闭标准I/O流,并等待命令执行结束。

函数格式

popen()函数和pclose()函数如下表:

Linux进程间通信(二) 管道通信之无名管道及其基础实验

Linux进程间通信(二) 管道通信之无名管道及其基础实验

(编辑:云计算网_泰州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读