2012-12-08 56 views
1

我想將一個程序的文本輸出轉換爲Gui輸出,第一個程序每微秒產生一行輸出。如果我在linux下用pipe命令發送,第二個程序如何接收並逐行處理?換句話說,我在C++中有主要的功能,這個參數是流和無限的。 謝謝C++流輸入過程

+2

如果將輸入管道輸入進程,它會轉到標準輸入,在C++中,它是'std :: cin'。你可以從那裏得到你的管道輸入。 – Cornstalks

回答

3

PROGRAM1:

#include <iostream> 
int main() 
{ 
    std::cout << "Program1 says Hello world!" << std::endl; // output to standard out using std::cout 
} 

Program2中:

#include <iostream> 
#include <string> 
int main() 
{ 
    std::string line; 
    while (std::getline(std::cin, line)) // Read from standard in line by line using std::cin and std::getline 
    { 
     std::cout << "Line received! Contents: " << line << std::endl; 
    } 
} 

現在,如果你運行Program1和管道進入Program2,你應該得到:

$ ./Program1 | ./Program2
Line Recieved! Contents: Program1 says Hello world!

注意Program2將繼續從標準輸入讀取,直到EOF達到(或出現一些錯誤)。

對於你的情況,Program1是產生輸出的東西,而Program2是消耗輸出的GUI程序。請注意,爲了讓程序無阻塞,您可能需要在單獨的線程上從標準輸入讀取數據。

至於你對「每毫秒接收一次輸入」的約束可能不太現實......它會盡可能快地處理,但你不能依靠標準輸入/輸出來快速,尤其是如果你發送的數據量很大。