tell(), tell64()

Определить текущую позицию курсора в файле

Прототип:

#include <unistd.h>
off_t tell( int filedes );
off64_t tell64( int filedes );

Аргументы:

filedes
Файловый дескриптор, для которого необходимо получить текущее значение смещения.

Библиотека:

libc

Описание:

Функция tell() определяет текущую позицию в файле для любой последующей операции read() или write() (то есть любой последующей операции с небуферизованным файлом). Значение поля filedes - это дескриптор файла, возвращаемый успешным вызовом open().

Можно использовать возвращаемое значение в сочетании с lseek(),чтобы сбросить текущую позицию в файле.

Возвращаемое значение:

Текущая позиция в файле, выраженная в виде количества байт от начала файла.

Если возникла ошибка функция возвращает -1, код ошибки записывается в errno.

Значение 0 обозначает начало файла.

Примеры:

#include <stdio.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <unistd.h>
#include <fcntl.h>
char buffer[] = { "A text record to be written" };
int main( void )
{
int filedes ;
int size_written;
/* open a file for output */
/* replace existing file if it exists */
filedes = open( "file", O_WRONLY | O_CREAT | O_TRUNC,
S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP );
if ( filedes != -1 )
{
/* print file position */
printf( "%ld\n", tell( filedes ) );
/* write the text */
size_written = write( filedes, buffer, sizeof( buffer ) );
/* print file position */
printf( "%ld\n", tell( filedes ) );
/* close the file */
close( filedes );
}
return (EXIT_SUCCESS);
}

Код генерирует следующий вывод:

$ ./a.out 0 28

Классификация:

tell() — ЗОСРВ «Нейтрино»; tell64() — Поддержка больших файлов

Безопасность использования
Точка остановки потока
Да
Обработчик прерываний
Нет
Обработчик сигналов
Да
В потоке
Да

Тематические ссылки:

chsize(), close(), creat(), dup(), dup2(), eof(), errno, execl(), execle(), execlp(), execlpe(), execv(), execve(), execvp(), execvpe(), fcntl(), fileno(), fstat(), isatty(), lseek(), open(), read(), sopen(), stat(), umask(), write()




Предыдущий раздел: Описание API системной библиотеки