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 操作)才能使讀取成功;讀取將釋放第一次寫入,但讀取本身不會被釋放,直到發生另一次寫入。

以前有人觀察過這種現象嗎?任何資訊將不勝感激。

相關內容