函数原型

  1. #include <unistd.h>
  2. ssize_t read(int fd, void *buf, size_t count);

参数

参数 描述
fd 文件描述符
buf 读取的数据存放在buf指针指向的缓冲区
count 读取的字节数

关于count:如果buf是一个字符数组名,那么count就用它的sizeof值。若buf是字符指针(字符串)则count用它的strlen值。

返回值

若果函数执行成功,返回读取的字节数,如果遇到EOF,则返回0。出错返回-1,并设置相应errno值。

  • 当我指定要读取100个字节的时候,在读完30个字节后,遇到了EOF,那么这时立即返回30,接下来继续执行read函数的时候返回0。
  • 从终端设备读,通常以行为单位,读到换行符就返回。
  • 当出错时(即返回-1),如果errno的值是EINTR,表示遇到调用信号而中断了读取,那么我们可以再次尝试read。

相关函数

|[[write|write]]|[[fread|fwrite-fread#fread]]|
|—————|——————|