c++ - 运行程序时如何捕获输入和输出到文件?

标签 c++ linux input terminal

我正在使用 C++ 工作,我需要一些方法来捕获控制台的输入和输出,就像我直接通过终端工作一样。

假设我有一个可执行文件 test.exe 和一个输入文件 input.txt,我想将输入和输出的组合保存到 console.out,我需要执行什么终端命令?

我不太擅长 linux 命令,尽管我会尽力谷歌,所以如果您知道您的帮助,我们将不胜感激!

例如,如果输入文件中有:

show
ignore
hide

并且,在使用此输入运行我的程序后,输出文件中包含:

Enter Command: 
/****SHOWING DATA!****/
Enter Command:
/****IGNORING DATA!***/
Enter Command:
/***HIDING DATA!***/

我想要一个看起来像这样的文件:

Enter Command: show
/****SHOWING DATA!****/
Enter Command:ignore
/****IGNORING DATA!***/
Enter Command:hide
/***HIDING DATA!***/

因此,如果我在没有任何重定向的情况下运行它,那将捕获我在终端中看到的内容。

最佳答案

script 命令可能会满足您的需要。它将记录输入和输出,并将其保存到文件中。唯一的问题是它有记录命令行或输入编辑的习惯,所以你可能需要稍微清理一下输出。 Here is a link这稍微解释了一下。

您只需在命令行键入 script 即可启动该实用程序。然后你会运行你的程序。键入 Control+D (^D) 告诉 script 实用程序停止录制。输出将位于您启动目录中名为 typescript.out 的文件中。

问题更改后更新

根据新问题,我认为您无法轻松完成您的要求。只有程序知道它消耗了多少来自 stdin 的输入。在出现下一个提示之前,没有好的方法知道程序读取标准输入直到遇到换行符。

关于c++ - 运行程序时如何捕获输入和输出到文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10140522/

相关文章:

input - 在 Go 中,使用递归扫描一行中的数字

c++ - 在编译时指定静态和动态大小

c++ - 从文件中读取 4 个十六进制值并转换为 float

c++ - 链接 INTEL tbb 库时遇到问题

python - 允许python应用程序为任何用户创建和访问文件,但不允许用户直接访问文件

jQuery:将分钟更改为小时

c++ - 两个 std::arrays 的交叉部分

c++ - 如何以编程方式阻止Linux操作系统用户空间中的USB存储设备

linux - fgrep 和egrep ?

Javascript:单击提交按钮时如何将隐藏的输入标记附加到表单中?