如何将文件句柄映射到它正在访问的文件

问题描述 投票:1回答:1

我试图将像file6(以前的set fh [open somefile.txt w]的结果)的文件句柄映射到它正在访问的文件。

所以我想在file6 - > somefile.txt之间进行映射

我试过file channels,但这只列出了频道名称 - 而不是实际的文件名。

tcl
1个回答
1
投票

正如您所注意到的,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
}

这当然是一个快速而肮脏的半解决方案,它使一些重要的事情保持开放,例如,如果关闭通道,关联如何被类似地删除。创建更全面的解决方案是可能的,但有点复杂。

文档:globalopenprocputsreturnset{*} (syntax)

© www.soinside.com 2019 - 2024. All rights reserved.