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 작업)가 필요한 경우가 있습니다. 읽기는 첫 번째 쓰기를 해제하지만 읽기 자체는 다른 쓰기가 발생할 때까지 해제되지 않습니다.

이전에 이 현상을 관찰한 사람이 있나요? 어떤 정보라도 가장 감사하겠습니다.

관련 정보