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

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

관련 정보