eof()

Проверить, достигнут ли конец файла (EOF)

Прототип:

#include <unistd.h>
int eof( int filedes );

Аргументы:

filedes
Дескриптор файла, который планируется проверить.

Библиотека:

libc

Описание:

eof() - функция низкого уровня, которая определяет, достигнут ли конец файла, указанного в filedes.

Операции ввода устанавливают текущую позицию в файле; вызов функции eof() позволяет определить, достигнут ли конец файла перед последующими операциями, чтобы избежать попыток чтения за пределами файла.


Note: Стоит отметить, что файловые операции с менеджерами ресурсов могут привносить иной смысл в статус end-of-file. Так, например, конец файла при чтении из произвольного префикса /dev/device может означать отсутствие данных во входной очереди устройства в текущий момент. В редких случаях, менеджер ресурсов может не рапортовать о конце файла в принципе, всегда возвращая последнюю доступную порцию данных. Иными словами, результат работы функции eof() полностью зависит от соответствующего менеджера ресурсов. В особенности, если файлом является префикс устройства.

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

1
Конец файла был достигнут.
0
Конец файла не был достигнут.
-1
Возникла ошибка. Код ошибки записан в errno.

Коды ошибок:

EBADF
Фаловый дескриптор filedes некорректен.

Примеры:

#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdlib.h>
int main( void )
{
int filedes, len;
char buffer[100];
filedes = open( "file", O_RDONLY );
if ( filedes != -1 )
{
while( !eof( filedes ) )
{
len = read( filedes, buffer, sizeof( buffer ) - 1 );
buffer[ len ] = '\0';
printf( "%s", buffer );
}
close( filedes );
return (EXIT_SUCCESS);
}
return (EXIT_FAILURE);
}

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

ЗОСРВ «Нейтрино»

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

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

errno, feof(), open(), read()




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