Я пытаюсь вызвать подпроцесс с дескриптором файла, открытым для данного канала, чтобы вызов 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, если это возможно.