У меня есть проблемы, чтобы понять, почему lseek
функция полезна.
Предполагая, что я получил такой параметр, данный мне от пользователя:
off_t offset = 10;
И я хотел прочитать со смещения 100 байт.
я могу использовать pread
как это:
void * buf = malloc(100);
if (buf == NULL) { exit(1);}
int res = pread(file_id, buf, 100, offset);
С другой стороны, я понимаю, что могу установить файл с lseek
как это:
off_t seek = lseek(file_id, offset, SEEK_SET);
Так что я верю, что я достиг pread
уже. Что я упустил в отношении lseek
в чем он может помочь мне прочитать файл?
Для функции может потребоваться чтение / запись из / в заданный дескриптор файла в месте, которое ей неизвестно (скажем, в текущей позиции), поэтому вам необходимо отсоединить поиск от чтения (или записи), потому что вызывающему может потребоваться установить местоположение.
В целом, многие операции ввода-вывода являются последовательными, поэтому поиск не требуется, а pread
ищет силы.
Других решений пока нет …