1
我想將一個程序的文本輸出轉換爲Gui輸出,第一個程序每微秒產生一行輸出。如果我在linux下用pipe命令發送,第二個程序如何接收並逐行處理?換句話說,我在C++中有主要的功能,這個參數是流和無限的。 謝謝C++流輸入過程
我想將一個程序的文本輸出轉換爲Gui輸出,第一個程序每微秒產生一行輸出。如果我在linux下用pipe命令發送,第二個程序如何接收並逐行處理?換句話說,我在C++中有主要的功能,這個參數是流和無限的。 謝謝C++流輸入過程
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程序。請注意,爲了讓程序無阻塞,您可能需要在單獨的線程上從標準輸入讀取數據。
至於你對「每毫秒接收一次輸入」的約束可能不太現實......它會盡可能快地處理,但你不能依靠標準輸入/輸出來快速,尤其是如果你發送的數據量很大。
如果將輸入管道輸入進程,它會轉到標準輸入,在C++中,它是'std :: cin'。你可以從那裏得到你的管道輸入。 – Cornstalks