seek
Синтаксис
seek FILEHANDLE, POSITION, WHENCE
Описание
Перемещает указатель текущей позиции файла, адресуемого указателем FILEHANDLE,
аналогично функции fseek стандартной библиотеки ввода-вывода. FILEHANDLE может быть введен
как выражение, значение которого дает имя собственно указателя файла. Аргумент WHENCE
указывает режим перемещения указателя:
0 - указатель устанавливается в положение POSITION,
1 - указатель сдвигается на POSITION байт относительно текущего положения,
2 - указатель сдвигается на POSITION относительно конца файла.
Вы можете использовать для этого аргумента символьные обозначения: SEEK_SET, SEEK_CUR и
SEEK_END при условии загрузки модуля POSIX. При успешном завершении функция возвращает 1, в противном случае - 0.
В некоторых системах вам может потребоваться выполнить перемещение указателя в ходе
переключения между чтением и записью файла. Кроме прочих случаев, это может использоваться
при вызове функции стандартного ввода-вывода clearerr.
Использование режима "whence", равного 1 (SEEK_CUR), полезно и тогда, когда вы
хотите лишь "подтвердить" положение указателя, не перемещая его:
seek(TEST,0,l);
Несмотря на кажущуюся бессмысленность, это необходимо при создании приложений,
работающих аналогично tail -f. Как только в ходе чтения вы обнаружите признак конца файла,
вы переводите процесс на некоторое время в состояние "спячки", а затем выполняете
"псевдоперемещение", чтобы синхронизироваться с файлом, содержание которого могло измениться.
В результате выполнения приведенной выше строки ваше положение в файле не изменится, но
состояние конца файла будет сброшено и вы сможете попытаться считать из <FILE> следующие данные.
Иногда, впрочем, этот механизм не срабатывает из-за особенностей построения библиотек ввода-вывода.
В таких случаях вам может потребоваться более "тяжеловесное решение", например такое:
for (;;) {
for ($curpos = tell(FILE);
$_ = <FILE>;
$curpos = tell(FILE)) {
# выполняем поиск нужных нам вещей и сохраняем
# их в файлах
}
sleep ($for_a_while) ;
seek(FILE, $curpos, 0);
}
Thanks
2023-11-16 22:30:18 Svetlana Thank you very useful information
Оставить комментарий:
|
|