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");.
