logo
Лекции / Novel, Unix, WindowsNT

Конструкционные блоки.

Как уже говорилось ранее, концепция разработки системы UNIX заключаласьв построении операционной системы из элементов, которые позволили бы пользователю создавать небольшие программные модули, выступающие в качестве конструкционных блоков при создании более сложных программ. Одним из таких элементов, с которым часто сталкиваются пользователи при работе с команднымпроцессором shell, является возможность переназначения ввода-вывода.

Вообще говоря, процессы одновременноимеют доступ к трем файлам: они читают из файла стандартного ввода, записывают в файл стандартного вывода и выводят сообщения обошибках в стандартный файл ошибок.

Например, команда

ls

выводит список всех файлов текущего каталога на устройство (в файл) стандартного вывода, а команда

ls > output

переназначает выводной поток со стандартного вывода в файл “output” в текущем каталоге, используя вышеупомянутый системный вызов creat. Подобным жеобразом, команда

mail mjb < letter

открывает (с помощью системного вызова open) файл “letter” в качестве файластандартного ввода и пересылает его содержимое пользователю с именем “mjb”.

Процессы могут переназначать одновременно и ввод, и вывод, как, например, вкомандной строке:

nroff -mm < doc1 > doc1.out 2> errors

Вторым конструкционным элементом является канал, механизм, обеспечивающий информационный обмен между процессами, выполнение которых связано с операциями чтения и записи. Процессы могут переназначать выводной поток состандартного вывода на канал для чтения с него другими процессами, переназначившими на канал свой стандартный ввод. Данные, посылаемые в канал первымипроцессами, являются входными для вторых процессов. Вторые процессы так жемогут переназначить свой выводной поток и так далее, в зависимости от пожеланий программиста. И снова, так же как и в вышеуказанном случае, процессамнет необходимости знать, какого типа файл используется в качестве файластандартного вывода; их выполнение не зависит от того, будет ли файлом стандартного вывода обычный файл, канал или устройство.

Примечание : Использование каналов зачастую делает ненужным создание временных файлов.

Yandex.RTB R-A-252273-3
Yandex.RTB R-A-252273-4