由于复杂的原因,我必须劫持“看跌”程序。我想根据“流”是什么来做不同的事情
proc myPuts { stream msg } {
if < stream is stdout >
....
elseif < stream is stderr >
...
else
...
}
有没有办法知道stream参数是stdout,stderr还是来自TCL内的文件?
谢谢,
答案 0 :(得分:1)
据我所知,Tcl中的stdout流是“stdout”,而stderr是“stderr”。如果一个puts $stream "string"
的$ stream的值为“stdout”,则转到stdout;与stderr类似。
对puts
的正常调用将stream参数视为可选;你的myPuts需要做同样的事情,并将缺少的操作数视为标准输出。除此之外,我认为这只是一个问题
if {$stream eq "stdout"} {
# do your stdout thing
} elseif {$stream eq "stderr"} {
# do your stderr thing
} else {
# do your file handle thing
}