重定向从 stdin 读取的程序输出

重定向从 stdin 读取的程序输出

当我想重定向输出时a. 输出我将使用的程序

./a.out > output.txt

当程序从中读取内容时,这不起作用标准输入。在这种情况下,您将如何重定向输出?

我只能用

./a.out < inputs.txt > output.txt

我可以做同样的事情,但读取输入标准输入

编辑:我意识到它有效,但我看不到提示,因为一切都进入文件输出.txt。所以,唯一的问题是看到提示标准输入并同时保留重定向。

答案1

一种选择是将提示写入stderr而不是stdout.它们在终端上可见,但在output.txt.

另一种选择是不对输出使用重定向,而是将输出文件名作为参数并自行打开该文件。然后您可以stdout根据提示使用。 (这更加灵活。您可以决定什么仅发送到文件,什么仅发送到屏幕,以及可能什么发送到两者。)

如果您无法更改代码,唯一的选择是使用tee或其他一些此类实用程序。缓冲可能是一个问题;stdbuf可能会有所帮助。

相关内容