Я использую socat для публикации данных из стандартного ввода в порт. Вкратце:
some_process | socat -u - tcp-listen:8888,reuseaddr,fork
Я хочу, чтобы конвейер оставался в рабочем состоянии, поскольку читатели на порту 8888 приходят и уходят, отсюда и вариант fork, но я также хочу, чтобы socat завершал работу, если some_process умирает. В настоящее время он остается живым и в этом случае.
Простой тестовый пример:
while : ; do echo 1; sleep 1; done | socat -u - tcp-listen:8888,reuseaddr,fork
который дает это дерево процессов (через pstree):
bash─┬─bash───sleep
└─socat
Если я убью второй bash (который запускает цикл while), я получаю:
bash───socat
Я хочу, чтобы socat также был прекращен. Возможно ли то, что я хочу?