FIFOは読み取りを満たすために2回の書き込みを必要とする場合がある

FIFOは読み取りを満たすために2回の書き込みを必要とする場合がある

Ubuntu 18.04.4 LTS で不可解な動作がいくつか見つかりました。

1 つの端末で、秘密鍵を FIFO に書き込みたいと思います。

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

別の端末で、キーの内容を取得するためにその FIFO を読み取りたいと思います。

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

最初の端末での書き込みは、2 番目の端末で読み取りが行われるまでブロックされ、その時点で両方とも解放されるものと予想されます。そして、これはほとんどの場合に発生します。

残念ながら、読み取りを成功させるには 2 回の書き込み (cat 操作) が必要になる場合があります。読み取りによって最初の書き込みは解放されますが、読み取り自体は別の書き込みが発生するまで解放されません。

この現象を以前に観察した人はいますか? どのような情報でもいただければ幸いです。

関連情報