gpt4 book ai didi

file - 如何将一系列命令的输出重定向到 stdout 和 Tcl 中的文件?

转载 作者:行者123 更新时间:2023-12-02 01:23:51 28 4
gpt4 key购买 nike

我正在寻找一种优雅的方法,将输出从一系列命令重定向到 stdout,并在可能的情况下在 Tcl 中同时重定向到文件,而不是执行如下操作。

例如两步法

proc foo {} { return "bar" }
puts "I call foo"
foo

set i_f [open myfile w]
puts $i_f "I call foo"
exec echo [foo] >> myfile

如果我先写入然后打印该文件的内容,则读取和打印内容会花费更多时间,所以我想知道是否有一种优雅的方法可以同时写入两个 channel (写入一个 channel )打开文件进行写入并输出到标准输出)。

此外,我想知道是否可以暂时将当前的stdout更改为另一个 channel ,然后将stdout更改回原来的stdout。

有多个 Tcl 过程调用,所有调用都输出到 stdout(通过普通的 put 或通过 Tcllib 的报告包)。

我不想检查和更改每个 Tcl 过程的内容,而是将它们输出到另一个 channel 以写入文件,然后将标准输出更改为原始标准输出。

最佳答案

您可以创建一个新的puts命令来替换原来的puts。在新命令中,将消息放入标准输出和文件。

rename puts _puts  ;# Replace Tcl build-in puts
set chan_log [open log_file w]
# Create a new puts command
proc ::puts { msg } {
::_puts $msg
::_puts $::chan_log $msg
}

puts "Hello, world!"
close $chan_log

关于file - 如何将一系列命令的输出重定向到 stdout 和 Tcl 中的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75373729/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com