新しく開かれた `/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

ベストアンサー1

おすすめ記事