NAME
       close - Close an open channel.

SYNOPSIS
       close channelId


DESCRIPTION
       Closes  the channel given by channelId.  ChannelId must be
       a channel identifier such as the return value from a  pre-
       vious  open  or  socket  command.   All buffered output is
       flushed to the channel's output device, any buffered input
       is discarded, the underlying file or device is closed, and
       channelId becomes unavailable for use.

       If the channel is blocking, the command  does  not  return
       until  all output is flushed.  If the channel is nonblock-
       ing and there is unflushed  output,  the  channel  remains
       open  and  the command returns immediately; output will be
       flushed in the background and the channel will  be  closed
       when all the flushing is complete.

       If  channelId is a blocking channel for a command pipeline
       then close waits for the child processes to complete.

       If the channel is shared between interpreters, then  close
       makes  channelId  unavailable  in the invoking interpreter
       but has no other effect until all of  the  sharing  inter-
       preters  have  closed  the  channel.  When the last inter-
       preter in which the channel is registered  invokes  close,
       the  cleanup actions described above occur. See the interp
       command for a description of channel sharing.

       Channels are automatically closed when an  interpreter  is
       destroyed  and  when  the  process  exits.   Channels  are
       switched to blocking mode, to ensure that  all  output  is
       correctly flushed before the process exits.

       The  command  returns an empty string, and may generate an
       error if an error occurs while flushing output.


SEE ALSO
       file(n), open(n), socket(n), eof(n)


KEYWORDS
       blocking, channel, close, nonblocking
