- •2 Теоретические вопросы кузнецов д.Б
- •1. Основные команды oc unix.
- •2.Команды для работы с текстовыми файлами
- •3.Тестирующие команды и работы с переменными
- •2. Поддержка многонитевого программирования.
- •3. Сокеты. Системные вызовы для работы с сокетами. Установка tcp-сединения.
- •4. Управление вводом-выводом, драйверы. Алгоритм обработки прерываний обращений к устройствам.
- •5. Диспетчеризация процессов. Алгоритмы планирования.
- •6. Взаимодействие процессов. Сигналы, именованные и неименованные каналы, ipc, сокеты.
- •7. Виды файловых систем. Типовые структуры каталогов в ос unix и Windows.
- •8. Средства разработки программ. Компилятор, средства разработки и отладки программ.
- •9. Системные вызовы для управления файлами. Открытие, чтение, запись, позиционирование, управление дескрипторами.
- •10. Назначение, функции, классификация операционных систем.
- •11. Пользовательский интерфейс операционной среды. Shell. Режимы командной строки и интерпретации программ.
- •12. Архитектура операционных систем. Понятие ядра и процесса. Состояния и контекст процесса.
- •13. Управление памятью в многозадачной операционной системе. Свопинг и подкачка по запросу.
- •14. Трансляторы. Структура компилятора. Лексический, синтаксический и семантический анализ.
- •15. Стандартный ввод-вывод. Переопределение стандартного ввода-вывода в Shell. Выполнение команд в конвеере.
15. Стандартный ввод-вывод. Переопределение стандартного ввода-вывода в Shell. Выполнение команд в конвеере.
Когда программа запускается на выполнение, в ее распоряжение предоставляются три потока (или канала):
• стандартный ввод (standard input или stdin). По этому каналу данные передаются программе;
• стандартный вывод (standard output или stdout). По этому каналу программа выводит результаты своей работы;
• стандартный поток сообщений об ошибках (standard error или stderr). По этому каналу программы выдают информацию об ошибках.
Из стандартного входа программа может только читать, а два других потока могут использоваться программой только для записи.
По умолчанию входной поток связан с клавиатурой, а выходной поток и поток сообщений об ошибках направлены на терминал пользователя.
Команда echo предназначена для выдачи на стандартный вывод строки символов, которая задана ей в качестве аргумента. После этого она выдает сигнал перевода строки и завершается. [user]$ echo ‘Привет!’
Перенаправление ввода/вывода
Механизм перенаправления ввода/вывода является одним из наиболее элегантных, мощных и одновременно простых механизмов ОС UNIX. Цель, которая ставилась при разработке этого механизма, состоит в следующем. Поскольку UNIX - это интерактивная система, то обычно программы вводят текстовые строки с терминала и выводят результирующие текстовые строки на экран терминала. Для того, чтобы обеспечить более гибкое использование таких программ, желательно уметь обеспечить им ввод из файла или из вывода других программ и направить их вывод в файл или на ввод другим программам.
Реализация механизма основывается на следующих свойствах ОС UNIX. Во-первых, любой ввод/вывод трактуется как ввод из некоторого файла и вывод в некоторый файл. Клавиатура и экран терминала тоже интерпретируются как файлы (первый можно только читать, а во второй можно только писать). Во-вторых, доступ к любому файлу производится через его дескриптор (положительное целое число). Фиксируются три значения дескрипторов файлов. Файл с дескриптором 1 называется файлом стандартного ввода (stdin), файл с дескриптором 2 - файлом стандартного вывода (stdout), и файл с дескриптором 3 - файлом стандартного вывода диагностических сообщений (stderr). В-третьих, программа, запущенная в некотором процессе, "наследует" от породившего процесса все дескрипторы открытых файлов. Пользователь имеет удобные средства перенаправления ввода и вывода на другие файлы (устройства).
• > перенаправление вывода.
$ ls >f1.test
команда "ls" сформирует список файлов текущего каталога и поместит его в файл "f1". Если файл "f1" до этого существовал, то он будет затерт новым.
• >> перенаправление вывода, но файл при этом не обнуляется.
$ pwd >>f1
команда pwd сформирует полное имя текущего каталога и поместит его в конец файла "f1", т.е. ">>" добавляет в файл, если он непустой.
• < и << перенаправление ввода
$ wc -l <f1
подсчитает и выдаст на экран число строк в файле f1.
$ ed f2 <<!
создаст с использованием редактора файл "f2", непосредственно с терминала. Окончание ввода определяется по символу, стоящему правее "<<" . То есть ввод будет закончен, когда первым в очередной строке будет "!".
• | Конвейер
Символ '|' (pipe), помещенный между двумя командами, создает программный конвейер: стандартный вывод команды, стоящей слева, передается на стандартный ввод команды, стоящей справа. Этот прием позволяет создавать цепочки команд, передающих данные друг другу.
Конвейер может состоять более, чем из двух команд. Вывести число всех файлов текущего каталога, в имени которых встречается "txt": ls | grep txt | wc -w
