Считать блоки данных из файла
#include <unistd.h>int readblock( int fd,size_t blksize,unsigned block,int numblks,void *buff );
libc
Функция readblock() считывает numblks блоков данных из файла, связанного с открытым файловым дескриптором fd, в буфер buff, начиная с блока block (блоки нумеруются, начиная с 0
). Аргумент blksize задает размер блока в байтах.
Эта функция полезна для прямого доступа к необработанным блокам на специальном блочном устройстве (например, к необработанным дисковым блокам), но также может использоваться, например, для высокоскоростного доступа к файлам базы данных. Прирост скорости достигается за счет комбинированного поиска/чтения, неявного в этом вызове, и возможности передавать за раз больше, чем ограничение функции read() в INT_MAX
байт.
Если numblks равно нулю, readblock() возвращает ноль.
При успешном завершении readblock() возвращает количество блоков, фактически прочитанных и помещенных в буфер. Это число никогда не превышает numblks. Возвращаемое значение может быть меньше numblks, если происходит одно из следующих событий:
Если ошибка чтения возникает в первом блоке, readblock() возвращает -1
и устанавливает errno в EIO
.
Количество фактически прочитанных блоков. Если происходит ошибка, возвращается -1, устанавливается errno для обозначения ошибки, а содержимое указателя буфера, на который указывает buff остается неизменным.
0
или отрицательное значение) или находится за пределами конца диска. ЗОСРВ «Нейтрино»
Предыдущий раздел: Описание API системной библиотеки