这是一个 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
,它都会返回整个正文。
有一个类似但不完全相同的问题的答案: