Spec-Zone.ru › Bash

Сопроцессы

coprocess — это командная строка оболочки, предваряемая зарезервированным словом coproc. Сопроцесс выполняется асинхронно в подоболочке, как если бы команда была завершена с оператором управления ‘&’, при этом устанавливается двунаправленная труба между выполняющей оболочкой и сопроцессом.

Синтаксис для сопроцесса:

coproc [NAME] command [redirections]

Это создает сопроцесс с именем NAME. command может быть либо простой командой (см. Простые команды), либо составной командой (см. Составные команды). NAME — это имя переменной оболочки. Если NAME не указан, используется имя по умолчанию COPROC.

Рекомендуемая форма для использования сопроцесса:

coproc NAME { command; }

Эта форма рекомендуется, потому что простые команды приводят к тому, что сопроцесс всегда называется COPROC, и она проще в использовании и полнее, чем другие составные команды.

Существуют и другие формы сопроцессов:

coproc NAME compound-command
coproc compound-command
coproc simple-command

Если command — составная команда, NAME является необязательным. Слово, следующее за coproc, определяет, интерпретируется ли это слово как имя переменной: оно интерпретируется как NAME, если это не зарезервированное слово, вводящее составную команду. Если command — простая команда, NAME не допускается; это сделано для предотвращения путаницы между NAME и первым словом простой команды.

При выполнении сопроцесса оболочка создает массивную переменную (см. Массивы) с именем NAME в контексте выполняющей оболочки. Стандартный вывод command подключается через трубу к дескриптору файла в выполняющей оболочке, и этот дескриптор присваивается NAME[0]. Стандартный ввод command подключается через трубу к дескриптору файла в выполняющей оболочке, и этот дескриптор присваивается NAME[1]. Эта труба устанавливается до любых перенаправлений, указанных в команде (см. Перенаправления). Дескрипторы файлов могут использоваться в качестве аргументов команд оболочки и перенаправлений с использованием стандартных расширений слов. Дескрипторы файлов, кроме созданных для выполнения команд и подстановок процессов, недоступны в подоболочках.

Идентификатор процесса оболочки, запущенной для выполнения сопроцесса, доступен в качестве значения переменной NAME_PID. Команда wait может использоваться для ожидания завершения сопроцесса.

Поскольку сопроцесс создается как асинхронная команда, команда coproc всегда возвращает успех. Код возврата сопроцесса — это код возврата command.

Copyright © 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
Licensed under the GNU Free Documentation License.
https://www.gnu.org/software/bash/manual/html_node/Coprocesses.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API