java.lang.System.out.println
and Tcl Blendprintln
from Tcl BlendSystem.err.println
set err [java::field System err] $err {println String} fooTo see the signatures of the methods that can be run on
$err
,
eval java::info methods $err
The Tcl Blend code below rebinds err
to a stream
and then gets the String value of the stream.
set stream [java::new java.io.ByteArrayOutputStream] set printStream [java::new \ {java.io.PrintStream java.io.OutputStream} $stream] java::call System setErr $printStream set err [java::field System err] $err {println String} foo $printStream flush puts "The error was [$stream toString]"
util.tcl
contains the
jdkCapture
proc:
# Capture output to System.out proc jdkCapture {script varName} { upvar $varName output set stream [java::new java.io.ByteArrayOutputStream] set printStream [java::new \ {java.io.PrintStream java.io.OutputStream} $stream] set stdout [java::field System out] java::call System setOut $printStream set result [uplevel $script] java::call System setOut $stdout $printStream flush set output [$stream toString] return $result }Below is an example:
% jdkCapture {puts stderr "This output goes to stderr"} erroutput This output goes to stderr % set erroutput % % jdkCapture {puts stdout "This output goes to stdout"} stdoutput % set stdoutput This output goes to stdout %
Last updated: 10/09/05,
cxh at eecs