如何在缓冲控制台输出中输出?例如,我只需输出命令“ipconfig -all”,并希望将该信息存储在某个缓冲区中?
答案 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
并传递包含STARTUPINFO
和dwFlags=STARTF_USESTDHANDLES
的{{1}}结构。