2011-10-31 98 views
1

我有一個應用程序需要發送命令到cmd,然後得到輸出(捕獲輸出)。如何在不使用任何MS Windows特定API的情況下使用C++來實現?有沒有一種方法可以做到跨平臺(例如用於Linux終端)?順便說一句,我在贏得XP SP3。如何使用C++與命令提示符(CMD)進行通信?

我其實是指重定向輸入/輸出。例如,在cmd上運行命令「make」,然後在錯誤捕獲錯誤消息的情況下(重定向到我的應用程序)。

+0

問題很不清楚。你是否必須啓動一個單獨的進程並重定向其輸入/輸出?或者你只是問如何打印東西,並從控制檯讀取? –

回答

2

如前所述:如果你能避免在程序啓動的子進程,而是融入更廣泛的「工具箱的比喻,」經常可以更好...

http://en.wikipedia.org/wiki/Unix_philosophy

但是,如果這不是一個適合您的項目,請查看Boost.Process

另外:如果你使用的是Qt(這在任何情況下都很好看),也有QProcess

+0

謝謝,正是我想要的。 – Amani

0

默認情況下,大多數系統從鍵盤獲得他們的標準輸入,因此cin通常需要從用戶那裏獲得信息,儘管在很多情況下這可以被重定向到其他來源。

你可以這樣做:

cout << "How old are you?" << endl; 
int age; 
cin >> age; 
1

你就不能使用常規的CIN和cout是C++提供? (當然如果你的程序是一個GUI程序,cin和cout將不會連接到任何有用的東西,除非你調用Windows AllocConsole()命令......但這只是Windows的工作方式。如果你想要編譯的代碼Linux等等,你可以把#ifdef WIN32放在這個調用中)

1

那麼,作爲C89和C99標準一部分的system()函數可以在Linux和Windows上使用,並允許在C/C++中執行命令。

+0

但是用這個函數不能重定向輸出。 – Amani

+0

您可以隨時將其輸出到一個temp result.txt文件,然後讀取該文件。 – Carth

相關問題