stderr is one of the stdio output files opened - applications and functions tend to use it for the output of error messages.
[Explain common idioms for management of stderr from subprocesses.]
[ exec conventions]
Pure Tcl programs write to stderr in two ways:
Often people ask how to open a pipeline to a command and read both its stdout and stderr.
One recent example of how to do this was:
set fd1 [open "|somecmd |& cat" "r"]
(if your system has a command named cat in the default path).
Glenn Jackman: Or, without having to open a cat process (see http://www.tcl.tk/man/tcl8.4/TclCmd/exec.htm ):
set fd1 [open "|somecmd 2>@ stdout" r]
Here's a quick test sequence:
set somecmd {sh -c {echo "to stdout" ; echo >&2 "to stderr"}} set f [open "| $somecmd" r] set std_out [read $f] catch {close $f} std_err puts "no redirection: std_out is '$std_out', std_err is '$std_err'" set f [open "| $somecmd 2>@ stdout" r] set std_out [read $f] catch {close $f} std_err puts "redirected: std_out is '$std_out', std_err is '$std_err'"
What category should this page be in? "infrastructure?" "Glossary"?