Linux进程间通信(二) 管道通信之无名管道及其基础实验
使用命令: gcc pipe.c -o pipe编译后,运行:./pipe 可以看到如下结果 标准流管道 标准流管道函数说明 与Linux的文件操作中有基于文件流的标准I/O操作一样, 管道的操作也支持基于文件流的的模式。这种基于文件流的管道主要是用来创建一个连接到另一个进程的管道 ,这里的"另一个进程"也就是一个可以进行一定操作的可执行文件,例如,用户执行“ls -l”或 者自己编写的程序“./pipe” 等。由于这类操作很常用,因此标准流管道就将一系列的创建过程合并 到一个函数 popen()中完成,它所完成的工作有以下几步: ① 创建一个管道 ② fork()创建一个子进程 ③ 在父子进程中关闭不需要的文件描述符 ④ 执行 exec 函数族调用 ⑤ 执行函数中所指定的命令 这个函数的使用可以大大减少代码的编写 量,但同时也有一些不利之处。例如,它不如前面管道创建的函数那样灵活多变,并且用popen()创建的管道 必须使用标准I/O函数进行操作,而不能使用前面的 read()、write()一类不带缓冲的I/O函数。与之相对应, 关闭用popen()创建的流管道必须使用函数 pclose(),该函数关闭标准I/O流,并等待命令执行结束。 函数格式 popen()函数和pclose()函数如下表: (编辑:源码门户网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |