Я могу написать приложение, которое будет копировать все входные данные из cin в контейнер (скажем, набор), а затем распечатывать содержимое контейнера обратно в стандартный вывод. В случае набора они будут отсортированы.
Если бы я сделал это и скомпилировал, как, скажем, mysort, я мог бы зайти в Unix и использовать программу как часть конвейера.
cat myfile.txt | mysort
и выводом будут слова из отсортированного myfile.
В этом случае mysort не мог ничего сделать до тех пор, пока весь вывод файла catfing myfile.txt не был передан в него. Как я могу сделать что-то похожее на данные процесса, генерируемые на лету? (Не обращайте внимания на сортировку; я знаю, что для сортировки мне понадобятся все данные сразу, чтобы отсортировать их).
Например, если я запустил огромную программу (назовем ее огромныйprog) и хотел бы проанализировать stdout и stderr этой огромной программы во время ее работы, как бы я обработал ввод в мою программу-анализатор (myanalyzer)?
Я бы хотел выполнить этот анализ вместе с запуском программы следующим образом:
hugeprog 2>&1 | myanalyzer