Ядро отправит сигнал SIGPIPE
другому процессу в канале, когда tail
завершится. Действие по умолчанию для этого сигнала (если не установлен обработчик) - завершить процесс.
Если вы не хотите иметь дело с сигналами, вы можете игнорировать SIGPIPE
в родительском элементе (таким образом, он не завершается после завершения tail
), и вместо этого проверить, является ли значение errno
EPIPE
после каждого read
. Кроме того, вам придется позвонить wait
или waitpid
от родителя, чтобы пожинать зомби-ребенка.