В операционной системе UNIX весь ввод и вывод осуществ-ляется посредством чтения файлов или их записи, потому чтовсе периферийные устройства, включая даже терминал пользова-теля, являются файлами определенной файловой системы. Этоозначает, что один однородный интерфейс управляет всеми свя-зями между программой и периферийными устройствами. В наиболее общем случае перед чтением из файла или за-писью в файл необходимо сообщить системе о вашем намерении;этот процесс называется "открытием" файла. Система выясня-ет,имеете ли вы право поступать таким образом (существует лиэтот файл? имеется ли у вас разрешение на обращение к не-му?), и если все в порядке, возвращает в программу небольшоеположительное целое число, называемое дескриптором файла.всякий раз, когда этот файл используется для ввода или выво-да, для идентификации файла употребляется дескриптор файла,а не его имя. (Здесь существует примерная аналогия с исполь-зованием READ (5,...) и WRITE (6,...) в фортране). Вся ин-формация об открытом файле содержится в системе; программапользователя обращается к файлу только через дескриптор фай-ла. Для удобства выполнения обычных операций ввода и выводас помощью терминала пользователя существуют специальные сог-лашения. Когда интерпретатор команд ("SHELL") прогоняетпрограмму, он открывает три файла, называемые стандартнымвводом, стандартным выводом и стандартным выводом ошибок,которые имеют соответственно числа 0, 1 и 2 в качестве деск-рипторов этих файлов. В нормальном состоянии все они связаныс терминалом, так что если программа читает с дескрипторомфайла 0 и пишет с дескрипторами файлов 1 и 2, то она можетосуществлять ввод и вывод с помощью терминала, не заботясьоб открытии соответствующих файлов. Пользователь программы может перенаправлять ввод и выводна файлы, используя операции командного интерпретатора SHELL"<" и ">" : PROG <INFILE>OUTFILE В этом случае интерпретатор команд SHELL изменит присваива-ние по умолчанию дескрипторов файлов 0 и 1 с терминала науказанные файлы. Нормально дескриптор файла 2 остается свя-занным с терминалом, так что сообщения об ошибках могут пос-тупать туда. Подобные замечания справедливы и тогда, когдаввод и вывод связан с каналом. Следует отметить, что во всехслучаях прикрепления файлов изменяются интерпретаторомSHELL, а не программой. Сама программа, пока она используетфайл 0 для ввода и файлы 1 и 2 для вывода, не знает ни отку-да приходит ее ввод, ни куда поступает ее выдача.