在TCL shell背景中运行循环

时间:2014-09-16 06:41:32

标签: background tcl

我正在寻找一种在TCL shell背景中运行循环的方法(意思是 - 调用某个函数的无限循环),但我找不到办法来做到这一点。

proc是一个简单的过程,从用户那里释放所有可能的许可证(我们在工作中缺少许可证,而且我们经常与谁打算获得许可证)。

循环本身很简单:

while {1} { 
      after 60000
      clr_lic
}

但是如何让它在后台运行,以便我也可以运行其他命令?

2 个答案:

答案 0 :(得分:2)

您是否正在运行事件循环?如果是,您可以使用every程序执行此操作:

proc every {ms script} {
    after $ms [info level 0]
    uplevel "#0" $script
    # Double quotes just for syntax highlighting…
}

every 60000 clr_lic

否则,事情变得尴尬:你必须考虑启动一个线程或一个子流程......而且,这一切都变得更加尴尬,因为那时你处于一个强烈隔离的环境中并拥有做更多的工作(好吧,通常)。


在测试上面的代码时,我使用了这个:

every 500 {
    puts "Hi there, world!"
}
vwait forever;  # Conventional way to run the event loop in tclsh

我写了很多信息;它灵活而且容易。

答案 1 :(得分:-1)

尝试在调用脚本时附加&符号(&)。这将在后台运行,您可以运行任何您喜欢的命令。