在重定向中使用时,<>的 POSIX 定义行为是什么?



可以以读写模式打开文件,并与之交互:

exec 4<> myfile
reader < myfile
writer >> myfile

以下代码也可以工作,并且更简单:

reader <> myfile
writer >> myfile

这使我相信<>在读取版模式下打开文件,但是当用作重定向时,表现为<。我可以找到有关<>行为的唯一信息与exec的使用有关。我在任何地方都找不到任何文档有关其行为是否实际定义为重定向,或者是否取决于实现。

在任何地方的POSIX规范中定义了此行为?它是便携式的吗?

来自2017年IEEE标准" shell命令语言":

2.7.7打开用于阅读和写作的文件描述符

重定向操作员:

[n]&lt;&gt; word

应导致其名称是为读取和写入n的读取和写入的文件,如果未指定n,则用n表示的文件描述符或标准输入。如果文件不存在,则应创建。

因此,任何符合的外壳都应尊重出口重定向。

最新更新