我正在寻找一种在TCL shell背景中运行循环的方法(意思是 - 调用某个函数的无限循环),但我找不到办法来做到这一点。
proc是一个简单的过程,从用户那里释放所有可能的许可证(我们在工作中缺少许可证,而且我们经常与谁打算获得许可证)。
循环本身很简单:
while {1} {
after 60000
clr_lic
}
但是如何让它在后台运行,以便我也可以运行其他命令?
答案 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)
尝试在调用脚本时附加&符号(&)。这将在后台运行,您可以运行任何您喜欢的命令。