在fortran中,stderr的单位为0。Stdin的单位为5,stdout的单位为6。就Google看来,这似乎是一个明智的决定,但不清楚为什么他们选择这样做。为什么不选择1和2?在旧的fortran编译器上将1-4移至stdin并移至5和6的用途是什么?
根据此页面(Clive G. Page 的“Fortran77 专业程序员指南”),单元 5 和 6 分别分配给 stdin 和 stdout,以实现向后兼容性,并且读卡器通常连接到“单元 5”和行式打印机到“unit 6”,引用:
为了保留与 Fortran66 的兼容性,许多系统提供了其他预连接文件。过去习惯上将单元 5 连接到读卡器,将单元 6 连接到行式打印机。其他单元通常连接到具有适当名称的光盘文件:因此单元 39 可能连接到名为 FTN039.DAT 甚至 TAPE39 的文件。
这并不是说这给出了为什么选择数字 5 和 6 的任何逻辑,而只是提供了一些历史背景。在历史机器上与 1-4 号单元相连的部分仍然保持开放状态。以下旧书/手册可能会提供一些启示:
根据DD Fisher 等人的说法。Fortran 编程简介,第 90 页,并非所有 FORTRAN 编译器都将单元 5 和 6 用于读卡器输入和行式打印机输出:
Waterloo FORTRAN IV 和 IBM System/360 FORTRAN IV 确实为此目的使用了单元 5 和 6,在然而,IBM 1130 的单元 2 和 1 用于读卡器输入和行式打印机输出。
最后根据FORTRAN-10/20 和 VAX FORTRAN 兼容性手册,第 3-6 页,对于 FORTRAN-10/20,“单元 1 是磁盘,单元 2 是读卡器,单元 3 是行式打印机,单元 5是终端”。对于 VAX FORTRAN,单元 5 适用于终端的 I 和 O。
也许这最后一部分表明,因为除了读卡器输入和行式打印机输出之外,一些机器开始拥有用于 I/O 的终端,并且首选/默认设备可能已成为输入和输出的终端,因此较高的终端 -相关单元已成为 I/O 默认值。