2012-06-08 63 views
0

好吧假設我有一個程序(在Windows的一個.exe文件),當我運行它,它輸出一些信息...現在我正在寫另一個程序(在C + + ),我需要它自動運行該.exe文件並讀取輸出,以便它可以處理該信息以進行進一步的操作...加載另一個命令行程序的輸出到我的

我該怎麼辦?

+0

的可能重複[搶程序的控制檯輸出(http://stackoverflow.com/questions/6633056/grab-programs-console-output) –

回答

3

使用popen或在窗口(每條評論)_popen。基本上,它的功能就像是some program | thing中的|

通常情況下,我反對發佈完整的代碼,但我今天寫了這個,並且手頭上有它,所以,在這裏,你去。根據我的理解,C++沒有很好的接口,它取代了popen,但是如果你在這個層引入了boost庫或其他的東西,那麼就有解決方案。

注意我使用char[10],因爲在我的應用程序中我知道輸出會很短。

PopenWrapper(const std::string& command) { 

      fd = popen(command.c_str(), "r"); 
      if(fd == NULL) { 
        throw PopenException("Failed to open command: " + command); 
      } 
    } 

    std::string get() { 
      char line[10]; 
      fgets(line, sizeof(line), fd); 
      return std::string(line); 
    } 

    ~PopenWrapper() { 
      if(fd != NULL) { 
        pclose(fd); 
      } 
    } 
+0

在Windows中,微軟已經黯然決定使用不規範名稱['_popen'](http://msdn.microsoft.com/en-us/library/96ayss4b%28v=vs.71%29.aspx)而不是'popen'。 –

+0

你真棒! – morTie

相關問題