TCL-如果脚本进入无限循环,则调用特定函数
TCL中是否有任何机制可以检查TCL脚本是否进入无限循环 比如说,, 我有Test.tcl,我想从中检查我的a.tcl是否进入无限循环?如果我的a.tcl进入无限循环,是否可以调用“你的a.tcl进入无限循环”的特定函数 在c语言中有一种定时器函数 希望我清楚TCL-如果脚本进入无限循环,则调用特定函数,tcl,Tcl,TCL中是否有任何机制可以检查TCL脚本是否进入无限循环 比如说,, 我有Test.tcl,我想从中检查我的a.tcl是否进入无限循环?如果我的a.tcl进入无限循环,是否可以调用“你的a.tcl进入无限循环”的特定函数 在c语言中有一种定时器函数 希望我清楚 谢谢看看interp limit函数,它允许类似的功能 检测无限循环类似于停止问题,因此,您只能设置希望等待的超时,而不能在一般情况下真正检测是否存在无限循环 在某些特殊情况下,如果您试图创建无限循环,Tcl会发出警告,尤其是在没有注册事
谢谢看看
interp limit
函数,它允许类似的功能
检测无限循环类似于停止问题,因此,您只能设置希望等待的超时,而不能在一般情况下真正检测是否存在无限循环
在某些特殊情况下,如果您试图创建无限循环,Tcl会发出警告,尤其是在没有注册事件源的情况下,尝试启动事件循环(通过vwait forever
)时
有关interp limit
的信息,请参阅以下文档:
它有一个在执行一定数量的命令后终止子解释器中无限循环的示例
set i [interp create]
interp limit $i command -value 1000
interp eval $i {
set x 0
while {1} {
puts "Counting up... [incr x]"
}
}
您还可以限制允许执行的时间
set i [interp create]
# set a limit to now + 1 seconds
interp limit $i time -seconds [expr {[clock seconds] + 1}]
interp eval $i {
set x 0
while {1} {
puts "Counting up... [incr x]"
}
}
vwait无限循环检测器在线程模式IIRC中关闭-代码知道它只是看不到其他线程在做什么-这是现代Tcl构建中的默认设置。限制是最好的内置方法,尽管通过异步API安装信号处理程序可能也会起作用(不幸的是,需要像TclX或Expect这样的扩展;默认情况下,Tcl脚本API中没有公开该功能)。Hi@DonalFellows interp limit$i time-second 1无法正常工作。意味着我希望我的循环在1秒后被中断。这是真的吗。或者我需要something@Axit索尼:阅读文档-秒1表示您希望将限制强制为1。1970年1月00:00:01。(它也拼写为-seconds和's')