在fortran stderr中是单位0. Stdin是第5单元,stdout是第6单元。就Google似乎表明,这似乎是一个cray决定,但目前尚不清楚为什么他们选择这样做。为什么不是1和2?在旧的fortran编译器中使用1-4的是什么,将stdin转移到了5和6?
答案 0 :(得分:1)
根据this page(Clive G. Page撰写的“ Fortran77专业程序员指南”),分别将单元5和6分配给stdin和stdout,以实现向后兼容性,并且通常已连接读卡器到“第5单元”,行式打印机到“第6单元”,引用:
为了保持与Fortran66的兼容性,许多系统提供了其他预连接的文件。通常将单元5连接到读卡器,将单元6连接到行式打印机。其他单元通常以适当的名称连接到光盘文件:因此,单元39可能连接到名为FTN039.DAT甚至TAPE39的文件。
并不是说,为什么选择数字5和6可以提供任何逻辑,而仅仅是一些历史背景。仍然留下了与历史机器上的1-4号单元连接的空间。以下旧书/手册可能会有所启发:
根据D.D. Fisher et al. An Introduction to Fortran Programming,第90页,并非所有FORTRAN编译器都将单元5和6用于读卡器输入和行式打印机输出:
滑铁卢FORTRAN IV和IBM System / 360 FORTRAN IV确实为此使用了单元5和6,但是在IBM 1130上,单元2和1用于读卡器输入和行式打印机输出。
最后根据FORTRAN-10/20 and VAX FORTRAN Compatibility Manual,第3-6页,对于FORTRAN-10 / 20,“单元1是磁盘,单元2是读卡器,单元3是行式打印机,单元5是终奌站”。使用VAX FORTRAN,单元5既可用于I终端,又可用于O终端。
也许这最后一部分表明,由于某些机器除了读卡器输入和行式打印机输出之外还开始具有I / O端子,并且首选/默认设备可能已成为输入和输出的端子,因此较高的端子-相关单元已成为I / O默认值。