O FIFO às vezes requer duas gravações para satisfazer a leitura

O FIFO às vezes requer duas gravações para satisfazer a leitura

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.

informação relacionada