恐惧如何运作?
How does fread work?
我了解到在各种编程语言中,例如 MatLab 和 C++,fread 被用作读取二进制文件的一种方式。我想知道这究竟是如何工作的?特别是,fread 如何知道从二进制文件中读入了一个新数字?有某种分隔符吗?
标准 C 库函数 fread
尝试从文件中读取一定数量的 "objects",以及 returns 它能够成功读取的数量。它是系统调用 read
(也是标准 C 库的一部分)的包装器,它试图从文件中读取一定数量的 字节 ,并且 returns 有多少能够读取成功。系统调用是由操作系统实现的,具体是由文件系统实现的。
虽然确切的实现细节可能很复杂(由于缓冲区的存在,例如),但本质上这很简单:文件系统知道文件的长度,并将其当前偏移量(位置)存储在文件(这实际上是 文件描述符 的一部分,其中几个可能引用同一个文件)。
我了解到在各种编程语言中,例如 MatLab 和 C++,fread 被用作读取二进制文件的一种方式。我想知道这究竟是如何工作的?特别是,fread 如何知道从二进制文件中读入了一个新数字?有某种分隔符吗?
标准 C 库函数 fread
尝试从文件中读取一定数量的 "objects",以及 returns 它能够成功读取的数量。它是系统调用 read
(也是标准 C 库的一部分)的包装器,它试图从文件中读取一定数量的 字节 ,并且 returns 有多少能够读取成功。系统调用是由操作系统实现的,具体是由文件系统实现的。
虽然确切的实现细节可能很复杂(由于缓冲区的存在,例如),但本质上这很简单:文件系统知道文件的长度,并将其当前偏移量(位置)存储在文件(这实际上是 文件描述符 的一部分,其中几个可能引用同一个文件)。