如何在缓冲控制台输出中输出?

时间:2010-11-10 09:03:25

标签: c++ console

如何在缓冲控制台输出中输出?例如,我只需输出命令“ipconfig -all”,并希望将该信息存储在某个缓冲区中?

2 个答案:

答案 0 :(得分:3)

您可以使用>将控制台应用程序的输出写入文件(至少在Windows中)。参数。

例如,根据您的情况,您可以编写ipconfig -all> C:\ output.txt将信息写入output.txt。

或者,如果您在代码中执行此操作,则可以创建运行ipconfig的进程,并使用Microsoft的复杂方法http://msdn.microsoft.com/en-us/library/ms682499%28VS.85%29.aspx或Qt等应用程序框架读取标准输出,从而简化流程管理http://qt.nokia.com/products/ - 请参阅QProcess:http://doc.qt.nokia.com/4.3/qprocess.html#readAllStandardOutput

答案 1 :(得分:1)

您似乎有XY problem

您真正想要做的是捕获另一个命令的输出。整个“缓冲”部分是你第一次尝试答案。它对你没有帮助,实际上它让你陷入了错误的方向。

badgerr提供了一些解决方案,但最常见的解决方案是popen("ifconfig -a", "r")。这不会返回缓冲区,而是返回FILE*,您可以将其传递给fread。它是一个POSIX功能,可在Linux上使用。

在Windows上,您拨打CreateProcess并传递包含STARTUPINFOdwFlags=STARTF_USESTDHANDLES的{​​{1}}结构。