跳转到内容

C 编程/POSIX 参考/unistd.h/read

来自维基教科书,开放的书籍,为开放的世界

在大多数现代 操作系统 中,需要从 文件 中访问数据的程序,该文件存储在 文件系统 中,会使用 read 系统调用。该文件由 文件描述符 标识,该文件描述符是从之前对 open 的调用中获得的。该系统调用会读取由调用者指定的数据,以字节为单位,从文件中读取数据,然后将数据存储到调用进程提供的缓冲区中。

read 系统调用可以接受三个参数

  1. 文件的描述符,
  2. 存储读取数据的缓冲区,以及
  3. 要从文件中读取的字节数。

POSIX 使用

[编辑 | 编辑源代码]

read 系统调用的接口由 POSIX 规范标准化。通过调用 read 函数来读取文件中的数据

ssize_t read(int fd, void *buf, size_t count);

返回值是读取的字节数(零表示 文件末尾),文件位置会根据该数字向前移动。如果该数字小于请求的字节数,则不构成错误;这种情况可能发生,例如,因为现在实际可用的字节数更少(可能是因为我们接近文件末尾,或者因为我们正在从 管道终端 读取),或者因为系统调用被 信号 中断。

或者,当发生错误时,会返回 -1,在这种情况下,errno 会被适当地设置,并且文件位置(如果有)是否会发生变化是未指定的。

POSIX 读取

华夏公益教科书