close

Команда закрывает открытый канал.

      close channelId
    

ОПИСАНИЕ

Команда close закрывает канал, идентификатор которого задан аргументом channelId. Идентификатор channelId возвращается командами open и socket при открытии канала.

Команда отправляет все накопившиеся в выходном буфере данные на выходное устройство канала, удаляет все данные во входном буфере, закрывает назначенное каналу устройство или файл. Доступ к каналу прекращается.

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

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

Если канал совместно используется несколькими интерпретаторами, то команда делает канал channelId недоступным в вызвавшем команду интерпретаторе, но не оказывает никакого другого действия на канал, пока все использующие канал интерпретаторы не закроют его. При выполнении команды в последнем из интерпретаторов, использовавших его, выполняются описанные выше действия. Подробности совместного использования канала несколькими интерпретаторами приведены в описании команды interp.

Команда close возвращает пустую строку. Она может порождать ошибку, если при выводе данных произошла ошибка.