Книга: Основы программирования в Linux
Потоки и дескрипторы файлов
Потоки и дескрипторы файлов
Каждый файловый поток ассоциирован с низкоуровневым дескриптором файла. Вы можете смешивать операции низкоуровневого ввода/вывода с высокоуровневыми потоковыми операциями, но это, как правило, неразумно, потому что трудно предсказать эффект от применения буферизации.
#include <stdio.h>
int fileno(FILE *stream);
FILE *fdopen(int fildes, const char *mode);
Вы можете определить, какой низкоуровневый дескриптор файла применяется для файлового потока, вызвав функцию fileno
. Она возвращает дескриптор файла для заданного потока или -1 в случае сбоя. Эта функция полезна при необходимости низкоуровневого доступа к открытому потоку, например для вызова функции fstat
применительно к этому потоку.
Можно создать новый поток файла на основе дескриптора файла, открытого только для чтения, применив функцию fdopen
. По существу, эта функция предоставляет буферы stdio для уже открытого файлового дескриптора, это может быть самый легкий вариант объяснения ее назначения.
Функция fdopen
действует так же, как функция fopen
, но в отличие от имени файла она принимает в качестве параметра низкоуровневый дескриптор файла. Это может пригодиться, если вы используете вызов open для создания файла, может быть для более тонкого управления правами доступа, но хотите применить поток для записи в файл. Параметр mode такой же, как у функции fopen
и должен быть совместим с режимами доступа к файлу, установленными при первоначальном открытии файла. Функция fdopen
возвращает новый файловый поток или NULL
в случае неудачного завершения.
- 1.2 Процесс, контекст процесса и потоки
- Резервное копирование многофайловых баз данных
- Восстановление из резервных копий многофайловых баз данных
- Создание файлов с блокировкой
- Рекомендуемое расширение для файлов баз данных - *.ib
- Создание многофайловой базы данных
- Стандартные потоки: stdin, stdout, stdeir, stdaux, stdprn.
- Правила именования файлов
- Глава 6 Файловые системы
- 3.4 Сетевая файловая система
- 6.4 Другие файловые системы
- 6.5 Файловая система NTFS