Tcl_GetStdChannel(), Tcl_SetStdChannel()

procedures for retrieving and replacing the standardchannels 

Tcl Library Procedures


#include <tcl.h>

Tcl_Channel Tcl_GetStdChannel(type)

Tcl_SetStdChannel(channel, type)



int type (in) 

The identifier for the standard channel to retrieve or modify. Must be one of TCL_STDIN, TCL_STDOUT, or TCL_STDERR.

Tcl_Channel channel (in) 

The channel to use as the new value for the specified standard channel.


Tcl defines three special channels that are used by various I/O related commands if no other channels are specified. The standard input channel has a channel name of stdin and is used by read and gets. The standard output channel is named stdout and is used by puts. The standard error channel is named stderr and is used for reporting errors. In addition, the standard channels are inherited by any child processes created using exec or open in the absence of any other redirections.

The standard channels are actually aliases for other normal channels. The current channel associated with a standard channel can be retrieved by calling Tcl_GetStdChannel() with one of TCL_STDIN, TCL_STDOUT, or TCL_STDERR as the type. The return value will be a valid channel, or NULL.

A new channel can be set for the standard channel specified by type by calling Tcl_SetStdChannel() with a new channel or NULL in the channel argument. If the specified channel is closed by a later call to Tcl_Close(), then the corresponding standard channel will automatically be set to NULL.

If Tcl_GetStdChannel() is called before Tcl_SetStdChannel(), Tcl will construct a new channel to wrap the appropriate platform-specific standard file handle. If Tcl_SetStdChannel() is called before Tcl_GetStdChannel(), then the default channel will not be created.

If one of the standard channels is set to NULL, either by calling Tcl_SetStdChannel() with a null channel argument, or by calling Tcl_Close() on the channel, then the next call to Tcl_CreateChannel() will automatically set the standard channel with the newly created channel. If more than one standard channel is NULL, then the standard channels will be assigned starting with standard input, followed by standard output, with standard error being last.


Windows 8.1. Windows Server 2012 R2. Windows 10. Windows Server 2016. Windows Server 2019. Windows 11. Windows Server 2022.


PTC MKS Toolkit for Professional Developers
PTC MKS Toolkit for Enterprise Developers
PTC MKS Toolkit for Enterprise Developers 64-Bit Edition


Tcl_Close(), Tcl_CreateChannel()

PTC MKS Toolkit 10.4 Documentation Build 39.