CodeNet / Языки программирования / C / C++ / Linux/Unix / Справочник С/C++ для UNIX - Список функций
CodeNet / Языки программирования / C / C++ / Руководства и справочные материалы по C/C++ / Справочники по функциям / Справочник С/C++ для UNIX - Список функций
CodeNet / Языки программирования / C / C++ / Руководства и справочные материалы по C/C++ / Справочники по функциям / Справочник С/C++ для UNIX - Список функций
lseek
LSEEK #include <stdio.h> требуется только для объявления функций. long lseek (stream, offset, origin); int handle; handle, ссылающийся на открытый файл long offset; число байтов из origin. int оrigin; начальная позиция. Описание. Функция lseek передвигает указатель на файл (если он есть), связанный с handle, на новое место расположения, которое является байтами offset из origin. Следующая операция в файле выполняется на новом месте рас- положения. Аргумент origin может быть одной из следующих констант, оп- ределенных в <stdio.h>. ORIGIN ОПРЕДЕЛЕНИЕ SEEK-SET начало файла. SEEK-CUR текущая позиция указателя на файл. SEEK-END конец файла. Функция lseek используется для перемещения указателя в лю- бое место файла. Указатель должен быть размещен вне конца файла. Однако попытка расположить указатель на файл в начале файла обыч- но приводит к ошибке. Возвращаемое значение. Функция lseek возвращает разветвление origin в байтах, оп- ределенное как значение от новой позиции до начала файла. Возвра- щаемое значение -1 указывает на ошибку; errno устанавливается в одно из следующих значений: ВЕЛИЧИНА ЕЕ СМЫСЛОВОЕ ЗНАЧЕНИЕ EBADF Неверный handle-р файла. ENIVAL Неверное значение для origin или позиция, определенная при помощи offset, находится перед началом файла. Для устройств, не приспособленных для поиска (seek), (таких как терминал и печать), возвращаемое значение неопределено. См. также fseek, tell. Пример: #include <io.h> #include <fcntl.h> #include <stdlib.h> int fh; long position; fh = open("data", O_RDONLY); . . . /* 0 - разветвление от начала */ position = lseek (fh, 0L, SEEK_SET); if (position == -1L) perror("lseek to beginning failed"); . . . /* находит текущую позицию */ position = lseek (fh, 0L, SEEK_CUR); if (position == -1L) perror("lseek to current position failed"); . . . /* выполняет до конца файла */ if (position == -1L) perror("lseek to end failed");.