これは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
。これは動作を説明しますが、これが保証されているかどうかはわかりません(もしそうであればどのような保証で):
実行すると、
exec 3<"a.txt"
常に/dev/fd/3
シンボリックリンクがありますa.txt
。開いて読むたびに
/dev/fd/3
全身が返されます。
似ているが同じではない質問に対する答えがあります。