새로 열린 `/dev/fd/3`을 항상 처음부터 읽는다는 것이 보장됩니까?

새로 열린 `/dev/fd/3`을 항상 처음부터 읽는다는 것이 보장됩니까?

이는 Linux 관련 문제입니다.

Bash 스크립트는 다음과 같습니다.

echo foo > "a.txt"
exec 3<"a.txt"
cat /dev/fd/3
cat /dev/fd/3
cat /dev/fd/3

산출:

foo
foo
foo

이들 모두가 cat표시됩니다 /dev/fd/3. 그러나 /dev/fd/3단지 심볼릭 링크일 뿐입니다 a.txt. 이것은 동작을 설명하지만 이것이 보장되는지는 알 수 없습니다(만약 그렇다면 어떤 보장으로):

  1. 실행하면 exec 3<"a.txt"항상 /dev/fd/3심볼릭 링크가 있습니다 a.txt.

  2. 열어서 읽을 때마다 /dev/fd/3몸 전체가 반환됩니다.

비슷하지만 동일하지는 않은 질문에 대한 답변이 있습니다.

https://unix.stackexchange.com/a/58124/7157

관련 정보