是否保证新打开的 `/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

相关内容