我试图将像file6
(以前的set fh [open somefile.txt w]
的结果)的文件句柄映射到它正在访问的文件。
所以我想在file6 - > somefile.txt之间进行映射
我试过file channels
,但这只列出了频道名称 - 而不是实际的文件名。
正如您所注意到的,Tcl不会为您保留此信息,但您可以通过执行以下操作轻松地自行跟踪它:
set fh [open somefile.txt w]
set filenames($fh) somefile.txt
然后,当您想知道相关的文件名时,您可以
puts $filenames($fh)
您可以通过例如自动化:
proc myOpen {name args} {
global filenames
set fh [open $name {*}$args]
set filenames($fh) $name
return $fh
}
这当然是一个快速而肮脏的半解决方案,它使一些重要的事情保持开放,例如,如果关闭通道,关联如何被类似地删除。创建更全面的解决方案是可能的,但有点复杂。