Tcl Built-In Commands close(1T)
_________________________________________________________________
NAME
close - Close an open channel.
SYNOPSIS
close channelId
_________________________________________________________________
DESCRIPTION
Closes the channel given by channelId. ChannelId must be an identifier for an open channel such as | a Tcl standard channel (stdin, stdout, or stderr), the | return value from an invocation of open or socket, or the | result of a channel creation command provided by a Tcl | extension.All buffered output is flushed to the channel's output dev-
ice, any buffered input is discarded, the underlying file ordevice 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 nonblocking | 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 pipelinethen 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 interpreters |have closed the channel. When the last interpreter in which |
the channel is registered invokes close, the cleanup actions |
described above occur. See the interp command for a descrip- |
tion 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 anerror if an error occurs while flushing output. If a com-
mand in a command pipeline created with open returns anerror, close generates an error (similar to the exec com-
mand.) Tcl Last change: 7.5 1Tcl Built-In Commands close(1T)
EXAMPLE
This illustrates how you can use Tcl to ensure that filesget closed even when errors happen by combining catch, close
and return: proc withOpenFile {filename channelVar script} {upvar 1 $channelVar chan
set chan [open $filename]
catch {uplevel 1 $script
} result optionsclose $chan
return -options $options $result
}SEE ALSO
file(1T), open(1T), socket(1T), eof(1T),Tcl_StandardChannels(3TCL)
KEYWORDSblocking, channel, close, nonblocking
ATTRIBUTES
See attributes(5) for descriptions of the following attri-
butes:_______________________________________
| ATTRIBUTE TYPE | ATTRIBUTE VALUE|
|____________________|__________________|_
| Availability | runtime/tcl-8 |
|____________________|__________________|_
| Interface Stability| Uncommitted ||____________________|_________________|
NOTES Source for Tcl is available on http://opensolaris.org. Tcl Last change: 7.5 2