FIFO иногда требует двух записей для удовлетворения чтения

FIFO иногда требует двух записей для удовлетворения чтения

Я обнаружил странное поведение Ubuntu 18.04.4 LTS.

В одном терминале я хотел бы записать закрытый ключ в 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>>

Я бы ожидал, что запись в первом терминале будет блокироваться до тех пор, пока не произойдет чтение во втором терминале, после чего оба терминала будут освобождены. И это происходит большую часть времени.

К сожалению, бывают случаи, когда для успешного чтения требуются две записи (операция cat); чтение освобождает первую запись, но само чтение не освобождается, пока не произойдет другая запись.

Наблюдал ли кто-нибудь это явление раньше? Любая информация будет очень полезна.

Связанный контент