ВУЗ:
Составители:
10
Функция может использоваться для того, чтобы удостовериться, что все
данные, ассоциированные в файлом FILDES записаны на носитель. Функция не
возвращает управление до тех пор, пока все операции не будут завершены. Прототип
функции находится в заголовочном файле <unistd.h>.
Функция возвращает 0, если никаких ошибок не произошло и –1 в противном
случае. Переменная errno может принимать следующие значения:
EBADF Дескриптор FILDES не допустим;
EINVAL Синхронизация недопустима, так как не поддерживается системой.
Иногда нет необходимости даже в записи всех данных, ассоциированных с
дескриптором. Например, в файлах баз данных, которые не изменяют свой размер,
достаточно записать на диск только данные, хранящиеся в файле. Мета-информация,
такая как время изменения файла, не так важна для восстановления данных в случае
возникновения каких-либо проблем. Сохранение только несущих данных, очевидно,
быстрее, чем сохранение всей информации, ассоциированной с дескриптором файла.
int fdatasync (int FILDES)
Функция может использоваться для того, чтобы удостовериться, что все
несущие данные, ассоциированные с дескриптором, записаны на носитель. Прототип
функции находится в заголовочном файле <unistd.h>.
Функция возвращает 0 в случае успешного выполнения и –1 в случае ошибки.
Глобальная переменная errno может принимать одно из следующих значений:
EBADF Дескриптор файла недопустим;
EINVAL Синхронизация недопустима, так как система ее не поддерживает.
Контрольные операции над файлами
Над дескрипторами файлов можно выполнять некоторые операции, например,
получение или установка флагов, описывающих состояние дескриптора, захват блоков
файла и тому подобное. Все эти операции выполняются функцией fcntl.
int fcntl (int FILEDES, int COMMAND, ...)
Функция выполняет команду COMMAND над дескриптором файла FILEDES.
Некоторые команды требуют задания дополнительных аргументов. Эти аргументы
описываются в детальных описаниях команд. Приведем краткий список возможных
команд:
F_DUPFD Дублирование дескриптора файла. Возвращает другой дескриптор,
ассоциированный с тем же открытым файлом;
F_GETFD Получает флаги, ассоциированные с дескриптором;
F_SETFD Устанавливает флаги, ассоциированные с дескриптором;
F_GETFL Получает флаги, ассоциированные с открытым файлом;
F_SETFL Устанавливает флаги, ассоциированные с открытым файлом;
F_GETLK Получает информацию о захваченных областях файла;
F_SETLK Устанавливает или сбрасывает захват файла;
F_SETLKW Идентично F_SETLK, но ожидает окончания выполнения;
F_GETOWN Получает процесс или группу процессов, которым будет послан
сигнал SIGIO;
F_SETOWN Устанавливает процесс или группу процессов, которым будет послан
сигнал SIGIO;
В случае ошибки функция, как правило, возвращает –1.
Дублирование дескрипторов
Существует возможность дублировать файловый дескриптор или выделить еще
один дескриптор, ассоциированный с тем же файлом, что и исходный. Дублированные
Функция может использоваться для того, чтобы удостовериться, что все данные, ассоциированные в файлом FILDES записаны на носитель. Функция не возвращает управление до тех пор, пока все операции не будут завершены. Прототип функции находится в заголовочном файле. Функция возвращает 0, если никаких ошибок не произошло и –1 в противном случае. Переменная errno может принимать следующие значения: EBADF Дескриптор FILDES не допустим; EINVAL Синхронизация недопустима, так как не поддерживается системой. Иногда нет необходимости даже в записи всех данных, ассоциированных с дескриптором. Например, в файлах баз данных, которые не изменяют свой размер, достаточно записать на диск только данные, хранящиеся в файле. Мета-информация, такая как время изменения файла, не так важна для восстановления данных в случае возникновения каких-либо проблем. Сохранение только несущих данных, очевидно, быстрее, чем сохранение всей информации, ассоциированной с дескриптором файла. int fdatasync (int FILDES) Функция может использоваться для того, чтобы удостовериться, что все несущие данные, ассоциированные с дескриптором, записаны на носитель. Прототип функции находится в заголовочном файле . Функция возвращает 0 в случае успешного выполнения и –1 в случае ошибки. Глобальная переменная errno может принимать одно из следующих значений: EBADF Дескриптор файла недопустим; EINVAL Синхронизация недопустима, так как система ее не поддерживает. Контрольные операции над файлами Над дескрипторами файлов можно выполнять некоторые операции, например, получение или установка флагов, описывающих состояние дескриптора, захват блоков файла и тому подобное. Все эти операции выполняются функцией fcntl. int fcntl (int FILEDES, int COMMAND, ...) Функция выполняет команду COMMAND над дескриптором файла FILEDES. Некоторые команды требуют задания дополнительных аргументов. Эти аргументы описываются в детальных описаниях команд. Приведем краткий список возможных команд: F_DUPFD Дублирование дескриптора файла. Возвращает другой дескриптор, ассоциированный с тем же открытым файлом; F_GETFD Получает флаги, ассоциированные с дескриптором; F_SETFD Устанавливает флаги, ассоциированные с дескриптором; F_GETFL Получает флаги, ассоциированные с открытым файлом; F_SETFL Устанавливает флаги, ассоциированные с открытым файлом; F_GETLK Получает информацию о захваченных областях файла; F_SETLK Устанавливает или сбрасывает захват файла; F_SETLKW Идентично F_SETLK, но ожидает окончания выполнения; F_GETOWN Получает процесс или группу процессов, которым будет послан сигнал SIGIO; F_SETOWN Устанавливает процесс или группу процессов, которым будет послан сигнал SIGIO; В случае ошибки функция, как правило, возвращает –1. Дублирование дескрипторов Существует возможность дублировать файловый дескриптор или выделить еще один дескриптор, ассоциированный с тем же файлом, что и исходный. Дублированные 10
Страницы
- « первая
- ‹ предыдущая
- …
- 8
- 9
- 10
- 11
- 12
- …
- следующая ›
- последняя »
