Bash: FIFO канал - как прервать чтение/запись?

компьютеры программирование Linux bash shell

Bash.
Создаю канал: mkfifo pipe.
Один процесс пишет: echo string > pipe
Другой читает: read var <pipe

Как грамотно прервать процесс, если противоположный так и не начал работать?

Например: read -t 3 var <pipe - не работает.
А например:
echo string > pipe & pid=$!
while pgrep $pid && [ $(( c++ )) -eq 3 ] ; do sleep 1 ; done ; pkill $pid
как-то сильно громоздко.

Может есть какие-то более правильные методы?

Примечание:
2 avp210159,
спасибо за участие, интересный метод. Но он не годится.
С момента завершения fuser, до старта писателя, читатель может исчезнуть или появится. Поэтому, все будет сильно усложнено flock'ами, гораздо громоздко, нежели даже внешний цикл-убийца.
Ответы:
Насчет чего-либо получше не знаю.
Вообще, на мой взгляд, FIFO можно
рассматривать, как средство синхронизации,
точку рандеву.
Если клиенту (писателю) надо узнать есть  ли
читатель, то можно использовать
fuser -f pipe | grep
или wc -l
сейчас у меня под рукой нет unix ...
Вообще под такого рода задачи советуют использовать perl/python/php и прочее, где есть полноценный alarm, служащий для решения такого рода проблем. Более-менее близкий к идеологически правильному методу способ изложен здесь:


14 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.