Главная » 2016 » Март » 28 » Поиск при помощи lseek()
12:08
Поиск при помощи lseek()
Обычно ввод-вывод выполняется в файле линейно, и все действия поиска, в которыхвозникает необходимость, относятся только к неявному обновлению позициив файле после операций считывания и записи. Некоторым приложениям,однако, приходится перемещаться по файлу. Системный вызов lseekO предназначендля установки позиции в файле, соответствующем файловому дескриптору.Помимо обновления позиции в файле, он больше ничего не делает и вообщеникакие действия ввода-вывода не инициирует:finclude <sys/types.h>finclude <unistd.h>off t lseek (int fd. off t pos, int origin);Поведение lseekO зависит от аргумента origin, который может приниматьследующие значения:SEEKCURТекущая позиция в файле fd увеличивается на значение аргумента pos, которыйможет содержать отрицательное, положительное и пулевое значение.Если pos равен нулю, то возвращается значение текущей позиции в файле.SEEKENDВ качестве текущей позиции в файле fd устанавливается значение, равноетекущей длине файла плюс значение pos. Аргумент pos может содержать отрицательное,положительное и нулевое значение. Если pos равен нулю, тосмещение устанавливается па конец файла.SEEK_SETТекущая позиция в файле fd приравнивается значению аргумента pos. Еслиpos равен нулю, то смещение устанавливается на начало файла.В случае успеха вызов возвращает новую позицию в файле. В случае ошибкион возвращает значение -1 и соответствующим образом устанавливает переменнуюеггпо.Например, чтобы установить позицию в файле fd па значение 1825, используйтеследующий код:o f f J rot ,ret = lseek (fd. (off_L) 1825. SEtK_SH).it (ret
Просмотров: 399 | Добавил: admin | Рейтинг: 0.0/0
Всего комментариев: 0
avatar