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

最佳答案

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

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

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

关于c - 是否可以将标准输出作为标准输入重定向到同一个程序?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21252452/

10-15 17:53