FIFO a veces requiere dos escrituras para satisfacer la lectura

FIFO a veces requiere dos escrituras para satisfacer la lectura

Encontré un comportamiento desconcertante en Ubuntu 18.04.4 LTS.

En una terminal, me gustaría escribir una clave privada en un FIFO.

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

En otra terminal, me gustaría leer ese FIFO para poder obtener el contenido de la clave.

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

Esperaría que la escritura en el primer terminal se bloqueara hasta que se produjera la lectura en el segundo terminal, momento en el que ambos se liberarían. Y esto sucede la mayor parte del tiempo.

Desafortunadamente, hay ocasiones en las que se necesitan dos escrituras (la operación cat) para que la lectura sea exitosa; la lectura liberará la primera escritura, pero la lectura en sí no se liberará hasta que se produzca otra escritura.

¿Alguien ha observado este fenómeno antes? Cualquier información sería muy apreciada.

información relacionada