为什么“UNIX系统上的二进制访问无意义”?

时间:2016-09-21 10:26:59

标签: c windows unix text binary

我正在从K& R手册中学习C.我知道(并读取)fopen呼叫中的'b'表示二进制访问。然后,本书接着说,这种(二进制访问)在UNIX系统上毫无意义。

推断是它在Windows上有意义。

我的问题是,为什么Windows在文本和二进制文件之间进行区分,而UNIX则不然。另外,区别是什么?

我找到了一些接近回答它的东西,但仍然不能让我满意:

Is there any difference between text and binary mode in file access?

http://perlmaven.com/what-is-a-text-file

提前致谢。

1 个答案:

答案 0 :(得分:2)

传统的Windows系统具有不同的文本和二进制文件表示。文本文件具有文件结束标记(^ -Z标记),因此如果在文本模式下打开它,则无法读取该字符,IO层只会检测到它并返回到您在文件末尾。在二进制模式下,它的行为类似于Unix系统。

Unix不关心文件内容,也不提供这样的语义。在Unix上,文件结束,只是尝试读取超过流长度的东西。这就是为什么文本或二进制模式在Unix世界中无关紧要,任何字符都可以出现在任何类型的常规文件中。