2010-11-10 78 views
1

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

+1

其中os?什么是缓冲区控制台输出?什么样的缓冲区?等 – 2010-11-10 09:08:43

+1

相关:http://stackoverflow.com/questions/2033878/cross-platform-redirect-of-standard-input-and-output-of-spawned-process-in-native – 2010-11-10 09:15:13

+0

你也许意思是:“如何将另一个进程的控制台输出重定向到缓冲区“? – MSalters 2010-11-10 09:51:36

回答

1

看来你有一个XY problem

你真正想要做的是捕捉其他命令的输出。整个“缓冲”部分是你第一次刺穿答案。它不会帮助你,事实上它让你陷入了错误的方向。

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

在Windows上,您可以拨打CreateProcess并通过STARTUPINFO结构,其中包含dwFlags=STARTF_USESTDHANDLEShStdOutput=ResultOfCreatePipe

+0

thnx所有的帮助,你给我正是我正在寻找:) – raptor 2010-11-10 17:30:31

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

+3

这将是很好的,如果当某人downvotes,他们留下评论说明原因。我也在这里学习。 – badgerr 2010-11-10 09:18:34

+0

匿名downvotes是我关于堆栈溢出的主要不满之一。我认为这个信息是相关的和准确的,所以+1 – 2010-11-10 14:23:32