Нет общего способа достичь того, что вы хотите.
Основная проблема в том, что труба - это односторонняя вещь, и производитель не имеет абсолютно никаких знаний о текущем состоянии потребителя, и о том, были ли данные, отправленные в трубу, уже потреблены или нет.
Итак, есть два способа обойти это ограничение, и оба требуют априорных знаний о данных и потребителях:
вы делаете производство (или транспортировку от оригинального производителя к трубам потребителей) настолько медленным, что потребители всегда синхронизированы, т.е. после каждой строки, которая должна быть отправлена на потребление, вы ждете так долго, что потребители на 100% уверены, что уже закончили обработку к тому времени, когда будет отправлена следующая строка (что-то похожее на то, что предложил TiberiusKirk),
вы проверяете прогресс обработки в потребителях, чтобы увидеть, что они уже потребляют входные строки (для этого нужна обратная связь или выход от потребителей, который может существовать или не существовать, и может быть обработан или не обработан).
Первый обходной путь требует надлежащей нижней границы для оценки времени обработки входных данных, второй обходной путь требует некоторой обратной связи от потребителей.
Пакет, который необходимо установить, — это пакет разработки. Точное имя может зависеть от версии вашего репозитория.В настоящее время в Ubuntu 18.04 он называется :libcanberra-gtk-dev
Вы можете использовать эту команду для вывода списка имен, а также компонентов, которые вы установили в данный момент (команды и вывода из моей системы):
$ apt search libcanberra-gtk | egrep ^libcanberra-gtk
libcanberra-gtk-common-dev/bionic,bionic,now 0.30-5ubuntu1 all [installed,automatic]
libcanberra-gtk-dev/bionic,now 0.30-5ubuntu1 amd64 [installed]
libcanberra-gtk-module/bionic,now 0.30-5ubuntu1 amd64 [installed,automatic]
libcanberra-gtk0/bionic,now 0.30-5ubuntu1 amd64 [installed,automatic]
libcanberra-gtk3-0/bionic,now 0.30-5ubuntu1 amd64 [installed,automatic]
libcanberra-gtk3-dev/bionic 0.30-5ubuntu1 amd64
libcanberra-gtk3-module/bionic,now 0.30-5ubuntu1 amd64 [installed,automatic]
При установке библиотеки dev обычно автоматически устанавливаются другие зависимости.