Зачем нам нужен lseek, когда pread принимает значение смещения?

У меня есть проблемы, чтобы понять, почему 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 в чем он может помочь мне прочитать файл?

1

Решение

Для функции может потребоваться чтение / запись из / в заданный дескриптор файла в месте, которое ей неизвестно (скажем, в текущей позиции), поэтому вам необходимо отсоединить поиск от чтения (или записи), потому что вызывающему может потребоваться установить местоположение.

В целом, многие операции ввода-вывода являются последовательными, поэтому поиск не требуется, а pread ищет силы.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]