Шаг 33.
Доступ к файлу. Функция close()

    На этом шаге мы рассмотрим функцию, закрывающую файл.

    По завершению работы с файлом он закрывается функцией close(). Единственным необязательным параметром этой функции является дескриптор, ассоциированный с файлом:

    close  ДЕСКРИПТОР;

    Эта функция возвращает значение Истина, если успешно очищен буфер ввода/вывода и закрыт системный дескриптор файла. Вызванная без параметра, функция close() закрывает файл, связанный с текущим дескриптором, установленным функцией select().

    Следует отметить, что закрывать файлы в профамме функцией close() не обязательно. Дело в том, что открытие нового файла с дескриптором, уже связанным с каким-либо файлом, закрывает этот старый файл. Более того, при завершении профаммы все открытые в ней файлы закрываются. Однако такое неявное закрытие файлов таит в себе потенциальные ошибки из-за невозможности определить, завершилась ли эта операция корректно. Может оказаться, что при записи в файл переполнится диск, или будет разорвана связь с удаленным устройством вывода. Подобные ошибки можно "отловить", если использовать явное закрытие файла и проверять содержимое специальной переменной $!:

    close(FILEIO) or die "Ошибка закрытия файла: $!";

    Существует еще один нюанс, связанный с явным закрытием файлов. При чтении из файла специальная переменная $. (если ее значение не изменено явным образом в программе) хранит номер последней прочитанной записи файла. При явном закрытии файла функцией close() значение этой переменной обнуляется, тогда как при неявном закрытии оно остается равным номеру последней прочитанной записи старого файла и продолжает увеличиваться при операциях чтения из нового файла.

    На следующем шаге мы рассмотрим чтение из файла.




Предыдущий шаг Содержание Следующий шаг