Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
Tcl_GetStdChannel(3)	    Tcl	Library	Procedures	  Tcl_GetStdChannel(3)

______________________________________________________________________________

NAME
       Tcl_GetStdChannel,  Tcl_SetStdChannel  -	 procedures for	retrieving and
       replacing the standard channels

SYNOPSIS
       #include	<tcl.h>

       Tcl_Channel
       Tcl_GetStdChannel(type)

       Tcl_SetStdChannel(channel, type)

ARGUMENTS
       int type	(in)			 The identifier	for the	standard chan-
					 nel 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.
______________________________________________________________________________

DESCRIPTION
       Tcl defines three special channels that are used	by various I/O related
       commands	 if no other channels are specified.  The standard input chan-
       nel 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 stan-
       dard  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 ar-
       gument.	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 a non-NULL value for channel is passed  to  Tcl_SetStdChannel,  then
       that same value should be passed	to Tcl_RegisterChannel,	like so:

	      Tcl_RegisterChannel(NULL,	channel);

       This  is	 a  workaround	for  a misfeature in Tcl_SetStdChannel that it
       fails to	do some	reference counting housekeeping.  This misfeature can-
       not be corrected	without	contradicting the assumptions of some existing
       code that calls Tcl_SetStdChannel.

       If Tcl_GetStdChannel is called before Tcl_SetStdChannel,	Tcl will  con-
       struct 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 automati-
       cally 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.

       See Tcl_StandardChannels	for a general treatise about standard channels
       and the behavior	of the Tcl library with	regard to them.

SEE ALSO
       Tcl_Close(3), Tcl_CreateChannel(3), Tcl_Main(3),	tclsh(1)

KEYWORDS
       standard	channel, standard input, standard output, standard error

Tcl				      7.5		  Tcl_GetStdChannel(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=Tcl_SetStdChannel.tcl90&sektion=3&manpath=FreeBSD+Ports+14.3.quarterly>

home | help