読むたびにコマンドから内容を取得する擬似ファイルを作成する方法

読むたびにコマンドから内容を取得する擬似ファイルを作成する方法

コマンドを読むたびに出力を取得するファイル(通常のファイルのように読み取ることができます)を作成したいと思います。

たとえば、これを行うとecho $RANDOM > testこれが呼び出され、生成されたcat test乱数が表示されます。

cat testただし、呼び出すたびに(または別の方法で読み取るたびに)ジェネレータコマンドを呼び出す必要があります(例では、echo $RANDOM実際には約1kb程度のより多くのデータを生成します)。

私の考えに最適なオプションは、デバイスの特殊なファイル/デバイスドライバの種類を作成することです。私にとって必要なのは、実際には/dev/zeroや/dev/randomのようなものです。簡単に作成できますか?標準のgnu / shライブラリを使用するのが理想的ですか?

どんなヒントでもよろしくお願いします!

答え1

名前付きパイプ機能を使用します。

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

もう別の端末に行って電話するたびに:

cat myfancypipe

から情報を入手できます。echo $RANDOM

関連情報