Функции, которые мы только что рассмотрели представляют интерфейс ввода/вывода между приложениями и ядром операционной системы. Хотя их использование напоминает использование библиотечных функций С, по существу они представляют собой лишь "обертки" к функциям ядра UNIX, фактически выполняющим операции ввода/вывода.
Однако программисты редко используют этот интерфейс низкого уровня, предпочитая возможности, предоставляемые стандартной библиотекой ввода/вывода. Функции этой библиотеки обеспечивают
Вместо использования файлового дескриптора библиотека определяет указатель на специальную структуру данных (структура FILE
), называемый stdin
, stdout
, stderr
соответственно для потоков ввода, вывода и сообщений об ошибках. Они определены следующим образом:
extern FILE *stdin;
extern FILE *stdout;
extern FILE *stderr;
Связь потоков стандартной библиотеки с файловыми дескрипторами приведена в табл. 2.9.
Таблица 2.9. Стандартные потоки и их дескрипторы
Файловый дескриптор | Поток (указатель) | Описание |
---|---|---|
0 | stdin | Стандартный ввод |
1 | stdout | Стандартный вывод |
2 | stderr | Сообщения об ошибках |
Таблица 2.10. Наиболее употребительные функции стандартной библиотеки ввода/вывода
Функция | Назначение |
---|---|
Открывает файл с указанным именем и возвращает файловый указатель, ассоциированный с данным файлом | |
Закрывает поток, освобождая буферы | |
Очищает буфер потока, открытого на запись | |
Считывает символ из потока | |
Записывает символ в поток | |
Считывает строку из потока | |
Записывает строку в поток | |
Считывает указанное число байтов из потока (бинарный ввод) | |
Записывает указанное число байтов в поток (бинарный вывод) | |
Позиционирует указатель в потоке | |
Производит форматированный вывод | |
Производит форматированный ввод | |
Возвращает файловый дескриптор данного потока |
Выбор между функциями интерфейса системных вызовов и стандартной библиотеки зависит от многих факторов, в частности, степени контроля ввода/вывода, переносимости программы, простоты. Взгляните, например, на следующие эквивалентные строки программы:
write (1, "Здравствуй, Мир!\n", 16);
printf("Здравствуй, Мир!\n");
В первой строке сообщение выводится с использованием системной функции
Но основным достоинством функций библиотеки является буферизация ввода/вывода, позволяющая минимизировать число системных вызовов
Библиотека предоставляет три типа буферизации:
Вильям Л Саймон , Вильям Саймон , Наталья Владимировна Макеева , Нора Робертс , Юрий Викторович Щербатых
Зарубежная компьютерная, околокомпьютерная литература / ОС и Сети, интернет / Короткие любовные романы / Психология / Прочая справочная литература / Образование и наука / Книги по IT / Словари и Энциклопедии