繁体   English   中英

是否可以将标准输出作为标准输入重定向到同一个程序?

[英]Is it possible to redirect stdout as stdin to same program?

我正在编写一个过滤器,并且我正在探索一种编写程序的方法。 我想知道这是否可能:从标准输入中的输入写入标准输出,但重定向此标准输出,以便程序再次读取生成的标准输出,就好像它是标准输入一样,从而重新处理数据。 我不希望将数据存储在一个巨大的数组中——我希望只使用流来做到这一点。 这甚至可能吗? (如果没有,那也没关系。)另外,请注意:我希望仅在 C 代码的单个源文件中执行此操作。

是的,您可以在任何 POSIX 系统中为自己创建一个管道

但是“天下没有免费的午餐” 如果你需要存储数据,它必须去某个地方。 该管道由操作系统管理的缓冲区支持。

您可以从字面上将管道的末端设置为支持stdinstdout (如 Joachim 的回答),但我建议不要这样做,因为它会覆盖程序的通常输入和输出通道。 (C 和任何 POSIX 服务都不会“发送”流,以便用户可以看到它并在程序中回显它。)

创建管道 将管道的读取端复制为新的STDIN_FILENO ,将写入端复制为STDOUT_FILENO ,一切就绪。 您现在写入stdout的所有内容都将在stdin上可用。

暂无
暂无

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

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