Как создать псевдофайл, который получает свое содержимое из команды каждый раз при его чтении?

Как создать псевдофайл, который получает свое содержимое из команды каждый раз при его чтении?

Я хочу создать что-то похожее на файл (что можно читать как обычный файл), которое при каждом чтении будет получать вывод от команды.

Например, если я это сделаю echo $RANDOM > test, то я могу позвонить cat test, и он отобразит сгенерированное случайное число.

За исключением того, что мне это понадобится каждый раз, когда я вызываю cat test(или читаю каким-либо другим способом) мою команду генератора ( echo $RANDOMв моем примере, но на самом деле она сгенерирует больше данных — около 1 Кб).

Я думаю, лучшим вариантом будет создать какой-то специальный файл устройства / драйвер устройства? То, что мне нужно, действительно похоже на /dev/zero или /dev/random. Возможно ли создать его просто? Использование стандартной библиотеки gnu/sh было бы идеальным?

Заранее спасибо за любую подсказку!

решение1

Используйте функциональность именованных каналов:

mkfifo myfancypipe;
while true; do bash -c 'echo $RANDOM' > myfancypipe; done

Теперь перейдите к другому терминалу и каждый раз звоните:

cat myfancypipe

Вы получите информацию отecho $RANDOM

Связанный контент