当文件出现在目录中时,如何在tcl中自动运行脚本?

当文件出现在目录中时,如何在tcl中自动运行脚本?,tcl,Tcl,我在tcl中有一个脚本可以运行,但到目前为止,我仍在手动执行,因为我必须等待一些文件生成完成 如何使此过程自动化,即如果出现文件,tcl脚本应自动触发?假设监视的目录中通常没有文件,这是定期轮询目录的有效方法: proc waitForFiles {directory} { set files [glob -directory $directory -nocomplain] if {[llength $files] == 0} { doSomethingHere

我在tcl中有一个脚本可以运行,但到目前为止,我仍在手动执行,因为我必须等待一些文件生成完成


如何使此过程自动化,即如果出现文件,tcl脚本应自动触发?

假设监视的目录中通常没有文件,这是定期轮询目录的有效方法:

proc waitForFiles {directory} {
    set files [glob -directory $directory -nocomplain]
    if {[llength $files] == 0} {
        doSomethingHere
    }
    # check again in 100 milliseconds
    after 100 [list waitForFiles $directory]
}

如果你在使用linux,有一个inotify软件包可用。是的,我在使用linux。我会研究一下你的建议。非常感谢。问题是我不允许添加任何外部包。因此,如果您有其他方法,请指导我完成。我从这篇评论中学到的after命令很有用,但是如果我需要一个特定的文件名,并且如果该文件出现,我将从那里继续执行下一个脚本/命令。我可以在上面提到的代码中集成这个概念吗?将条件更改为
if{$expectedFile in$files}
if{[file exists[file join$directory$expectedFile]]}
非常感谢Glenn的快速响应!!如果您确切地知道该文件将被调用,
文件存在
文件可读
是可行的选择,并且都比
glob
便宜。