C 编程/POSIX 参考/unistd.h/read
外观
在大多数现代 操作系统 中,需要从 文件 中访问数据的程序,该文件存储在 文件系统 中,会使用 read 系统调用。该文件由 文件描述符 标识,该文件描述符是从之前对 open 的调用中获得的。该系统调用会读取由调用者指定的数据,以字节为单位,从文件中读取数据,然后将数据存储到调用进程提供的缓冲区中。
read 系统调用可以接受三个参数
- 文件的描述符,
- 存储读取数据的缓冲区,以及
- 要从文件中读取的字节数。
read 系统调用的接口由 POSIX 规范标准化。通过调用 read 函数来读取文件中的数据
ssize_t read(int fd, void *buf, size_t count);
返回值是读取的字节数(零表示 文件末尾),文件位置会根据该数字向前移动。如果该数字小于请求的字节数,则不构成错误;这种情况可能发生,例如,因为现在实际可用的字节数更少(可能是因为我们接近文件末尾,或者因为我们正在从 管道 或 终端 读取),或者因为系统调用被 信号 中断。
或者,当发生错误时,会返回 -1,在这种情况下,errno 会被适当地设置,并且文件位置(如果有)是否会发生变化是未指定的。