我想将一个程序的文本输出转换为Gui输出,第一个程序每微秒产生一行输出。如果我在linux中用pipe命令发送,第二个程序如何逐行接收和处理?换句话说,我在C ++中有主要功能,这个参数是流和无限的。 谢谢
答案 0 :(得分: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程序。请注意,为了使程序无阻塞,您可能希望在单独的线程上从标准输入读取。
至于你的“每微秒接收输入”的约束可能不太现实......它会尽可能快地处理,但你不能依赖标准输入/输出那么快,特别是如果你'发送大量数据。