![FIFOは読み取りを満たすために2回の書き込みを必要とする場合がある](https://rvso.com/image/178490/FIFO%E3%81%AF%E8%AA%AD%E3%81%BF%E5%8F%96%E3%82%8A%E3%82%92%E6%BA%80%E3%81%9F%E3%81%99%E3%81%9F%E3%82%81%E3%81%AB2%E5%9B%9E%E3%81%AE%E6%9B%B8%E3%81%8D%E8%BE%BC%E3%81%BF%E3%82%92%E5%BF%85%E8%A6%81%E3%81%A8%E3%81%99%E3%82%8B%E5%A0%B4%E5%90%88%E3%81%8C%E3%81%82%E3%82%8B.png)
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 操作) が必要になる場合があります。読み取りによって最初の書き込みは解放されますが、読み取り自体は別の書き込みが発生するまで解放されません。
この現象を以前に観察した人はいますか? どのような情報でもいただければ幸いです。