У меня есть две программы на C++: одна, которая выводит сообщение на stdout, а другая, которая прослушивает stdin и печатает весь контент из потока. Они называются out
и in
соответственно.C++: Чтение из stdin, поскольку данные записываются в трубу
out.cpp:
#include <iostream>
using namespace std;
int main() {
cout<<"HELLO";
usleep(1000000);
cout<<"HELLO";
}
in.cpp:
#include <iostream>
using namespace std;
int main() {
string input;
while(cin>>input) {
cout<<input;
}
}
В настоящее время он стоит, обжигающе данные от out
до in
ждет в течение двух секунд, затем печатает HELLOHELLO
:
~$ ./out | ./in
#...two seconds later:
~$ ./out | ./in
HELLOHELLO~$
Я уверен, что это простой вопрос, но возможно ли для in
печатать каждый HELLO
, поскольку out
печатает его? Я читал, что piped commands run concurrently, но я должен не понимать эту концепцию для этой конкретной ситуации. Желаемые рабочие характеристики:
~$ ./out | ./in
#...one second later:
~$ ./out | ./in
HELLO
#...one second after that:
~$ ./out | ./in
HELLOHELLO~$