![O FIFO às vezes requer duas gravações para satisfazer a leitura](https://rvso.com/image/178490/O%20FIFO%20%C3%A0s%20vezes%20requer%20duas%20grava%C3%A7%C3%B5es%20para%20satisfazer%20a%20leitura.png)
Encontrei algum comportamento desconcertante no Ubuntu 18.04.4 LTS.
Em um terminal, gostaria de escrever uma chave privada para um FIFO.
$ mkfifo /tmp/fifo
$ chmod o-rwx /tmp/fifo
$ chmod g-rwx /tmp/fifo
$ cat id_rsa > /tmp/fifo
Em outro terminal, gostaria de ler esse FIFO para obter o conteúdo da chave.
$ ssh -i /tmp/fifo -o StrictHostKeyChecking=no <<user@address>>
Eu esperaria que a gravação no primeiro terminal fosse bloqueada até que a leitura ocorresse no segundo terminal, momento em que ambos seriam liberados. E isso acontece na maioria das vezes.
Infelizmente, há momentos em que são necessárias duas gravações (a operação cat) para que a leitura seja bem-sucedida; a leitura liberará a primeira gravação, mas a leitura em si não será liberada até que outra gravação ocorra.
Alguém já observou esse fenômeno antes? Qualquer informação será muito útil.