READAHEAD - Linux手册页
Linux程序员手册 第2部分
更新日期: 2019-03-06
名称
readahead-启动文件预读到页面缓存
语法
#define _GNU_SOURCE /* See feature_test_macros(7) */ #include <fcntl.h> ssize_t readahead(int fd, off64_t offset, size_t count);
说明
readahead()在文件上启动预读,以便从缓存中满足对该文件的后续读取,并且不会在磁盘I / O上阻塞(假设预读已足够早地启动,并且系统上的其他活动同时没有进行)从缓存中刷新页面)。
fd参数是一个文件描述符,用于标识要读取的文件。 offset参数指定要从其读取数据的起点,而count指定要读取的字节数。 I / O在整个页面中执行,因此偏移量有效地向下舍入到页面边界,并且字节读取到大于或等于(offset + count)的下一个页面边界。 readahead()不会读取超出文件末尾的内容。由文件描述符fd引用的打开文件描述的文件偏移保持不变。
返回值
成功时,readahead()返回0;否则,返回0。如果失败,则返回-1,并设置errno以指示错误原因。
错误说明
- EBADF
- fd不是有效的文件描述符,或者未打开以供读取。
- EINVAL
- fd并不引用可以应用readahead()的文件类型。
版本
readahead()系统调用出现在Linux 2.4.13中。自2.3版以来已提供glibc支持。
遵循规范
readahead()系统调用是特定于Linux的,在便携式应用程序中应避免使用它。
备注
在某些32位体系结构上,由于syscall(2)中描述的原因,此系统调用的调用签名有所不同。
BUGS
readahead()尝试在后台调度读取并立即返回。但是,它在读取定位请求的块所需的文件系统元数据时可能会阻塞。 ext [234]在使用间接块而不是扩展块的大文件上经常发生,这使调用看上去一直阻塞到读取请求的数据为止。
另外参见
lseek(2),madvise(2),mmap(2),posix_fadvise(2),read(2)
出版信息
这个页面是Linux手册页项目5.08版的一部分。有关项目的说明、有关报告错误的信息以及此页面的最新版本,请访问https://www.kernel.org/doc/man-pages/。