Есть ли способ создать неблокирующий / асинхронный именованный канал или что-то подобное в оболочке? Чтобы программы могли помещать строки в нее, эти строки оставались бы в оперативной памяти, и когда какая-то программа могла читать некоторые строки из канала, оставляя то, что не читала в fifo? Также очень вероятно, что программы могут одновременно писать и читать на этот fifo. Сначала я подумал, что, возможно, это можно сделать с помощью файлов, но после небольшого поиска в Интернете кажется, что ничего хорошего не может быть получено из-за того, что файл читается и записывается одновременно. Именованные каналы почти сработали бы, просто есть две проблемы: во-первых, они блокируют чтение / запись, если на другом конце никого нет, во-вторых, даже если я разрешаю запись в заблокированный канал и задаю два процесса для записи в канал, пока никто не читает, пытаясь написать по одной строке для каждого процесса, а затем попытаться head -n 1 <fifo>
, я получаю только одну нужную строку, но оба процесса записи завершаются, а вторая строка теряется. Какие-либо предложения?
Редактировать: может быть, какая-нибудь промежуточная программа могла бы помочь с этим, действуя как посредник между писателями и читателями?