Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОперационныеСистемы, общие понятия.docx
Скачиваний:
140
Добавлен:
08.02.2015
Размер:
366.4 Кб
Скачать

Системный вызов close

Системный вызов close отсоединяет файл от процесса, т.е. закрывает файл. Возвращает 0 в случае успеха и -1 в случае неудачи.

Системный вызов pipe

Системный вызов pipe создает коммуникационный канал межпроцессной связи между двумя взаимосвязанными процессами:

int pipeHandle[2];

if (pipe(pipeHandle) == -1)

{ авария }

pipeHandle[0] – для чтения из канала.

pipeHandle[1] – для записи в канал.

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

Если у канала доступ на запись закрыл, при чтении из такого канала будет получен код ответа 0, что означает конец файла. Если у канала доступ на чтение закрыт, будет получен сигнал разорванного канала SIGPIPE.

Общепринятый метод создания каналов состоит в следующем: программа создает канал по системному вызову pipe, после чего разделяется на две копии с помощью fork. Затем в одном из полученных процессов закрывается сторона канала для чтения (pipeHandle[0]), а с другой стороны для записи (pipeHandle[1]). После чего по созданному однонаправленному каналу производиться обмен информацией.

Интерпретатор команд shell. (28-2)

Интерпретатор команд shell – один из наиболее важных и самых сложных программ в ОС Unix. Он обеспечивает интерфейс пользователь – ядро и выполняет следующие функции:

  1. Интерпретирует команды.

  2. Обрабатывает имена файлов, которые определены через метасимволы.

  3. Осуществляет переадресацию ввода/вывода.

  4. Создает срезу пользователя.

  5. Поддерживает командный язык.

(Раскрыть эти функции!!)

Разновидностиshell

  • B-shell (Stephen Bourne, Bell Labs).

  • C-shell (Bill Joy, Berkley, C-подобный).

  • K-shell (David Korn, Bell Labs, сочетаниеBиC).

  • P-shell (POSIX стандарт).

Метасимволы

  • - произвольная строка символов.

  • ? – произвольный символ (один).

  • [] – альтернативный символ подстановки.

Переадресация ввода/вывода

Если требуется, shell позволяет легко перенаправить устройства ввода/вывода:

  • > - запись в файл, если файл не существует, то создается новый, иначе файл перезаписывается (жесткое перенаправление).

  • < - ввод из файла (с начала) в команду.

  • >> - запись в файл, если файл не существует, то создается новый, иначе файл дополняется с конца (мягкое перенаправление).

  • >> - ввод из файла не сначала (lseek для установки позиции).

Конвейер команд

Команда 1|Команда 2

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

Еще плюшки

Команда 1 && Команда 2 – вторая команда выполняется только, если успешно выполнилась первая.

Команда 1 || Команда 2 – обе команды выполняются в любом случае.

Команда& - запуск команды в фоновом режиме (подавление вывода на консоль всякой информации).

Особенности программирования на командном языке в ОС UNIX. (9-2)

Поддержка командного языка

Для эффективного взаимодействия команд в рамках программ на командном языке интерпретатор shell разрешает использование специальных переменных – обычных идентификаторов, которые объявляются и инициализируются присваиванием, и которым при использовании добавляется символ $.

Помимо переменных, введенных пользователем, shell позволяет использовать специальные системные переменные:

  • $ - все переменные интерпретатора shell.

  • S# - количество внешних аргументов.

  • $1, S2… - внешний аргумент 1, 2 и т.д.

  • $? – результат выполнения последней команды shell.

  • $$ - идентификатор текущего процесса.