为什么在 Unix 上打开文件进行二进制访问是“毫无意义的”,读/写的“+”也不是?

mad*_*erd 1 filesystems c files

我正在阅读 C 编程语言(第二版)。在第 157 页和第 158 页,作者给出了fopenUnix 系统中的代码片段。在代码片段的末尾,作者补充道:

特别是,我们fopen不能识别表示二进制访问的“b”,因为它在 UNIX 系统上没有意义,也不能识别允许读取和写入的“+”。

为什么作者说它没有意义?(这里提到的“b”和“+”是文件访问方式)

Ste*_*itt 8

一些非 Unix 系统以不同的方式处理二进制文件和文本文件。例如,在 DOS、Windows 和 OS/2 下(fopen设计时并不相关,但可作为有用的示例),以文本模式打开文件并写入文件会将行尾从“C”约定转换 ( \n)无论平台需要什么。在其他系统上,以二进制模式打开文件将使其在记录中进行处理。这就是fopen“b”标志控制:没有它打开的文件以文本模式打开,用它打开的文件以二进制模式打开。由于 Unix 风格的系统没有这种区别,“b”被忽略(并且不会导致错误)。

我这本书的副本没有提到“+”,但我猜fopen当时不支持它(现在支持)。