1つのプログラムからのテキスト出力をGui出力に変換し、最初のプログラムがマイクロ秒ごとに行出力を生成したい。Linuxでpipeコマンドを使用して送信する場合、2番目のプログラムはどのように行ごとに受信して処理しますか?言い換えれば、このパラメーターがストリームで無制限であるというC++の主な機能があります。ありがとうございました
1252 次
1 に答える
3
プログラム1:
#include <iostream>
int main()
{
std::cout << "Program1 says Hello world!" << std::endl; // output to standard out using std::cout
}
プログラム2:
#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プログラムです。プログラムを非ブロッキングにするために、別のスレッドで標準入力から読み取りを行うことをお勧めします。
「マイクロ秒ごとに入力を受信する」という制約については、現実的ではないかもしれません...可能な限り高速に処理されますが、特に送信する場合は、標準の入出力をそれほど高速にすることはできません。まともな量のデータ。
于 2012-12-08T16:46:37.117 に答える