将输出重定向到Cygwin下的文件时,TCL脚本行为不同的原因是什么?

将输出重定向到Cygwin下的文件时,TCL脚本行为不同的原因是什么?,cygwin,tcl,Cygwin,Tcl,当调用脚本作为 tclsh ./TestDriver.tcl TestList tcl脚本在一行(?)之后停止。但当调用时,输出重定向到文件 tclsh ./TestDriver.tcl TestList >bar.out 它运行平稳。 你知道这种行为的原因是什么吗?我猜tcl程序正在调用istty函数,并根据它是否认为正在写入终端来改变它的行为。可能是因为它试图格式化输出,而较宽的终端导致输出失败。几乎所有Tcl脚本的输出都指向终端或文件时工作相同。虽然有一个变量可以关闭,但当您将脚

当调用脚本作为

tclsh ./TestDriver.tcl TestList
tcl脚本在一行(?)之后停止。但当调用时,输出重定向到文件

tclsh ./TestDriver.tcl TestList >bar.out
它运行平稳。
你知道这种行为的原因是什么吗?

我猜tcl程序正在调用istty函数,并根据它是否认为正在写入终端来改变它的行为。可能是因为它试图格式化输出,而较宽的终端导致输出失败。

几乎所有Tcl脚本的输出都指向终端或文件时工作相同。虽然有一个变量可以关闭,但当您将脚本作为参数提供时,它不会起作用。另一个基线差异是默认情况下,
stdout
将具有不同的属性;您可以将其更改为定义为:

fconfigure stdout -buffering none ;# Or “line” or “full”

但是,我希望这些差异会使重定向到文件的情况下(非常轻微地)不太可能工作。不管发生了什么(我敢打赌它要么涉及运行子流程,要么涉及使用扩展包),根据提供的证据,我猜不出它。

你能提供更多的上下文吗?例如,您能否显示Tcl脚本,直到它暂停/退出?我将运行更多测试,尝试在简单脚本上重现此问题,并在获得更多结果时编写更多测试。