Wie kann ich eine Pseudodatei erstellen, die ihren Inhalt bei jedem Lesen aus einem Befehl erhält?

Wie kann ich eine Pseudodatei erstellen, die ihren Inhalt bei jedem Lesen aus einem Befehl erhält?

Ich möchte etwas Dateiähnliches erstellen (das wie eine normale Datei gelesen werden kann), das bei jedem Lesen die Ausgabe eines Befehls erhält.

Wenn ich beispielsweise dies tue echo $RANDOM > test, kann ich anrufen cat testund es wird die generierte Zufallszahl angezeigt.

Außer dass ich das jedes Mal bräuchte, wenn ich es aufrufe cat test(oder es auf andere Weise lese), wird mein Generatorbefehl aufgerufen ( echo $RANDOMin meinem Beispiel, aber tatsächlich werden mehr Daten generiert – etwa 1 KB).

Ich denke, die beste Lösung wäre, eine Art spezielle Gerätedatei/Gerätetreiber zu erstellen. Was ich brauche, ist tatsächlich ähnlich wie /dev/zero oder /dev/random. Ist es möglich, so etwas einfach zu erstellen? Die Verwendung einer Standard-GNU/SH-Bibliothek wäre ideal?

Vielen Dank im Voraus für jeden Hinweis!

Antwort1

Verwenden Sie die Funktion „Named Pipes“:

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

Gehen Sie nun zu einem anderen Terminal und rufen Sie jedes Mal auf:

cat myfancypipe

Infos erhalten Sie vonecho $RANDOM

verwandte Informationen