Настройка чтения конвейеров из именованных каналов без блокировки в bash

Я пытаюсь вызвать подпроцесс с файловым дескриптором, открытым для данного канала, так что вызов open () не зависает в ожидании получения другой стороны канала.

Показывать:

$ mkfifo /tmp/foobar.pipe
$ some_program --command-fd=5 5</tmp/foobar.pipe

В этом случае,some_program не запускается, пока какой-то процесс не/tmp/foobar.pipe открыт для записи; тем не мение,some_program имеет полезные эффекты, даже когда он не получает команды, поэтому желаемое поведениеsome_program быть немедленно исполненным.

Механизмы, чтобы сделать это, выполняя через альтернативный язык сценариев (python, perl и т. Д.) Или обертку C, которые открывают/tmp/foobar.pipe сO_NONBLOCK флаг очевиден; Я ищу решение для чистого bash, если это возможно.

Ответы на вопрос(2)

Ваш ответ на вопрос