我想在Windows Tcl中加载包时将stdout重定向到null。 (重定向“质量Windows音频/视频体验(qWAVE)支持的措辞可用。”为null)
他们有什么方法可以解决这个或任何想法吗?非常感谢你。
C:\Users\Tester>tclsh
% set ixchariot_installation_dir "C:/Program Files x86)/Ixia/IxChariot"
C:/Program Files (x86)/Ixia/IxChariot
% cd $ixchariot_installation_dir
% load ChariotExt
Quality Windows Audio/Video Experience (qWAVE) support is available.
答案 0 :(得分:0)
如果库正在使用Tcl通道来编写其消息,并且您正在使用Tcl 8.6,那么它非常简单。您只需在吞下所有字节的stdout
频道上推送变换。
# Most of this is boiler-plate stuff...
namespace eval swallow {
proc initialize {handle mode} {
return {initialize clear finalize write flush}
}
proc clear {handle} {}
proc finalize {handle} {}
proc flush {handle} {}
# The important one; do nothing to throw away bytes
proc write {handle buffer} {}
# Export as an ensemble
namespace export *
namespace ensemble create
}
# Start dropping output
chan push stdout swallow
load ChariotExt
# Stop dropping output
chan pop stdout
如果库使用Tcl通道写入消息,则仅有效。如果它使用直接写入(更可能的情况)它不会。您可以尝试完全重定向,但这些不容易撤消。
close stdout
open NUL
load ChariotExt
我知道它适用于POSIX系统(/dev/null
代替NUL
除外)。在Windows上不确定。并且 无法轻松撤消; 旧标准输出流已消失。
在任何情况下,库都可能直接写入控制台;那些是不可阻挡的,你可能只需忍受这种恼人的信息。