русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Перенаправление ввода-вывода


Дата добавления: 2014-11-28; просмотров: 784; Нарушение авторских прав


Механизм перенаправления ввода-вывода является одним из наиболее элегант­ных, мощных и одновременно простых механизмов UNIX. Цель, которая стави­лась при разработке этого механизма, состоит в следующем. Поскольку UNIX — это интерактивная система, которая создавалась в конце 60-х — начале 70-х годов, то обычно программы считывали текстовые строки с алфавитно-цифрового тер­минала и выводили результирующие текстовые строки на экран терминала. Для того чтобы обеспечить большую гибкость при использовании таких программ, же­лательно было иметь возможность вводить в них данные непосредственно из фай­лов или с выхода других программ и выводить их данные в файл или на вход дру­гих программ.

Реализация этого механизма основывается на следующих свойствах операцион­ных систем семейства UNIX. Во-первых, любой ввод-вывод трактуется как ввод из некоторого файла и вывод в некоторый файл. Клавиатура и экран терминала тоже интерпретируются как файлы (первый можно только читать, а во второй мож­но только писать). Во-вторых, доступ к любому файлу производится через его де­скриптор (положительное целое число). Фиксируются три значения дескрипто­ров файлов. Файл с дескриптором 1 называется файлом стандартного ввода (stdin), файл с дескриптором 2 — файлом стандартного вывода (stdout), и файл с дескрипто­ром 3 — файлом стандартного вывода диагностических сообщений (stderr). В-треть­их, программа, запущенная в некотором процессе, «наследует» от породившего процесса все дескрипторы открытых файлов.

1 Не путать с потоком выполнения, или тредом (thread).


Семейство операционных систем UNIX____________________________________ 323

В головном процессе интерпретатора командного языка файлом стандартного ввода является клавиатура терминала пользователя, а файлами стандартного вывода и вывода диагностических сообщений — экран терминала. Однако при запуске лю­бой команды можно сообщить интерпретатору (средствами соответствующего ко­мандного языка), какой файл или выход какой программы должен служить фай­лом стандартного ввода для запускаемой программы, а также какой файл или вход какой программы должен служить для запускаемой программы файлом стандарт­ного вывода или файлом вывода диагностических сообщений. Тогда интерпрета­тор перед выполнением системного вызова exec открывает указанные файлы, под­меняя смысл дескрипторов 1, 2 и 3.



То же самое может проделать и любая другая программа, запускающая третью программу в специально созданном процессе. Следовательно, все, что требуется для нормального функционирования механизма перенаправления ввода-выво­да, — это придерживаться при программировании соглашения об использовании дескрипторов stdin, stdout и stderr. Это не очень трудно, поскольку в наиболее распространенных функциях библиотеки ввода-вывода printf, scanf и error вооб­ще не требуется указывать дескриптор файла. Функция printf неявно использует дескриптор stdout, функция scanf — дескриптор stdin, функция error— дескрип­тор stderr.



<== предыдущая лекция | следующая лекция ==>
Подсистема ввода-вывода | Файловая система


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 1.736 сек.