![FIFO는 때때로 읽기를 만족시키기 위해 두 번의 쓰기가 필요합니다.](https://rvso.com/image/178490/FIFO%EB%8A%94%20%EB%95%8C%EB%95%8C%EB%A1%9C%20%EC%9D%BD%EA%B8%B0%EB%A5%BC%20%EB%A7%8C%EC%A1%B1%EC%8B%9C%ED%82%A4%EA%B8%B0%20%EC%9C%84%ED%95%B4%20%EB%91%90%20%EB%B2%88%EC%9D%98%20%EC%93%B0%EA%B8%B0%EA%B0%80%20%ED%95%84%EC%9A%94%ED%95%A9%EB%8B%88%EB%8B%A4..png)
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 작업)가 필요한 경우가 있습니다. 읽기는 첫 번째 쓰기를 해제하지만 읽기 자체는 다른 쓰기가 발생할 때까지 해제되지 않습니다.
이전에 이 현상을 관찰한 사람이 있나요? 어떤 정보라도 가장 감사하겠습니다.