繁体   English   中英

将stdout重定向到另一个程序的stdin

[英]Redirecting stdout to stdin of another program

为了了解pipping的工作原理,我在此处遍历了大量Google链接和问题,但是我似乎无法掌握使标准输出重定向到第二个程序的stdin的概念。

我正在尝试创建一个程序,该程序可以在文本字符周围移动,对其进行加密并将其放入字符串中。 我的第二个程序应该采用该字符串并将其解密。 我了解创建管道所需的功能,但我不了解的是它如何指向下一个程序,我查看的所有源代码似乎都包含父级和子级,而没有第二个程序。

在两个程序的标准流之间建立管道是如何启动程序的问题。 如果一个执行另一个(例如fork() / execlp() ),则父级使用pipe()创建管道,父级和子级使用dup2()将管道末端与适当的文件描述符关联(执行之前执行者(对于孩子而言)。

如果两个程序都不启动另一个程序, 启动它们的程序(通常是外壳程序)必须设置管道。

假设你正在使用的基于Unix操作系统的管壳| 字符用于创建此链接。 例如:我想运行program1并将program1的标准输出重定向到program2作为其标准输入。

program1 | program2

这是一个Linux示例,其中使用ls获取目录内容的名称,然后将其管道传输到head -3以获取前三个文件的名称。 然后,我们将这三个名称传递到tail -1以获取最后一个(或目录中第三个文件的名称)。

ls | head -3 | tail -1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM