FIFO erfordert manchmal zwei Schreibvorgänge, um den Lesevorgang zu erfüllen

FIFO erfordert manchmal zwei Schreibvorgänge, um den Lesevorgang zu erfüllen

Ich habe bei Ubuntu 18.04.4 LTS ein rätselhaftes Verhalten festgestellt.

In einem Terminal möchte ich einen privaten Schlüssel in ein FIFO schreiben.

$ mkfifo /tmp/fifo
$ chmod o-rwx /tmp/fifo
$ chmod g-rwx /tmp/fifo
$ cat id_rsa > /tmp/fifo

In einem anderen Terminal möchte ich diesen FIFO lesen, um den Inhalt des Schlüssels zu erhalten.

$ ssh -i /tmp/fifo -o StrictHostKeyChecking=no <<user@address>>

Ich würde erwarten, dass der Schreibvorgang im ersten Terminal blockiert wird, bis der Lesevorgang im zweiten Terminal erfolgt. An diesem Punkt werden beide freigegeben. Und das passiert die meiste Zeit.

Leider gibt es Fälle, in denen zwei Schreibvorgänge (die Cat-Operation) erforderlich sind, damit der Lesevorgang erfolgreich ist. Beim Lesen wird der erste Schreibvorgang freigegeben, der Lesevorgang selbst wird jedoch erst freigegeben, wenn ein weiterer Schreibvorgang erfolgt.

Hat jemand dieses Phänomen schon einmal beobachtet? Für jede Information wäre ich sehr dankbar.

verwandte Informationen