
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.