2010-11-10 105 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