Шаг 73.
Переназначение ввода/вывода

    На этом шаге мы рассмотрим способы переназначения устройств ввода/вывода.

    В MS DOS клавиатура может быть заменена некоторым файлом с помощью обозначения <. Если, например, программа prog использует функцию getchar(), то по команде:

   prog < infile

prog будет читать информацию из файла infile, а не с клавиатуры. Переназначение ввода делается так, что сама программа prog "не замечает" изменения. Переключение ввода остается незамеченным и в том случае, когда входная информация приходит из другой программы через механизм, называемый каналом.

    Команда

   otherprog | prog

запускает две программы, otherprog и prog, причем стандартный ввод для prog идет из стандартного вывода для otherprog.

    Функция getchar() возвращает значение EOF, если она встречает в текущем вводе признак конца файла. В файле stdio.h определяется макроимя EOF равное -1. Рекомендуется все проверки на конец файла писать в терминах EOF, чтобы не зависеть от конкретной реализации.

    Вывод символов можно осуществлять с помощью функции

   putchar(c);  ,
помещающей символ c в стандартный вывод (по умолчанию - терминал).

    Вывод также можно перенаправить в некоторый файл с помощью обозначения >. Если prog использует putchar(), то команда

   prog > outfile
приведет к направлению стандартного вывода в файл outfile, а не на терминал.

    Можно использовать и межпрограммный канал ввода/вывода. Команда

   prog | anotherprog

замыкает стандартный вывод из prog на стандартный ввод в anotherprog, причем prog снова ничего не будет "знать" о перенаправлении.

    Вывод, осуществляемый с помощью функции printf(), также поступает в стандартный вывод, и обращения к putchar() и printf() могут произвольно чередоваться.


    Замечание. Все сказанное справедливо также для потоков ввода/вывода cout и cin.


    На следующем шаге мы приступим к рассмотрению директив препроцессора.


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