READ(2) | Linux Programmer's Manual | READ(2) |
read - 在文件描述符上执行读操作
#include <unistd.h> ssize_t read(int fd, void *buf, size_t count);
read() 从文件描述符 fd 中读取 count 字节的数据并放入从 buf 开始的缓冲区中.
如果 count 为零,read()返回0,不执行其他任何操作. 如果 count 大于SSIZE_MAX,那么结果将不可预料.
成功时返回读取到的字节数(为零表示读到文件描述符), 此返回值受文件剩余字节数限制.当返回值小于指定的字节数时 并不意味着错误;这可能是因为当前可读取的字节数小于指定的 字节数(比如已经接近文件结尾,或者正在从管道或者终端读取数 据,或者 read()被信号中断). 发生错误时返回-1,并置 errno 为相应值.在这种情况下无法得知文件偏移位置是否有变化.
也可能发生其他错误,具体情况和 fd 所连接的对象有关. POSIX 允许 read 在读取了一定量的数据后被信号所中断,并返回 -1(且 errno 被设置为EINTR),或者返回已读取的数据量.
SVr4, SVID, AT&T, POSIX, X/OPEN, BSD 4.3
在NFS文件系统中,读取小块数据仅更新时间标记,之后的调用 不再读取服务器端的数据.这是因为客户端把数据放在缓存里. 由于大多数情况下不存在NFS服务器向客户端的读操作, 所以NFS客户必须将更新时间标记的操作放在服务器端,而 数据可以放在客户端的缓存里留待以后更新.UNIX也可以禁用 客户端的缓存,但那样的话大多数情况下会导致服务器性能下降.
close(2), fcntl(2), ioctl(2), lseek(2), readdir(2), readlink(2), select(2), write(2), fread(3)
byeyear <love_my_love@263.net >
2002.02.02
http://cmpp.linuxforum.net
本页面中文版由中文
man 手册页计划提供。
中文 man
手册页计划:https://github.com/man-pages-zh/manpages-zh
July 12, 1997 | Linux 2.0.32 |