Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
TCL-如果脚本进入无限循环,则调用特定函数_Tcl - Fatal编程技术网

TCL-如果脚本进入无限循环,则调用特定函数

TCL-如果脚本进入无限循环,则调用特定函数,tcl,Tcl,TCL中是否有任何机制可以检查TCL脚本是否进入无限循环 比如说,, 我有Test.tcl,我想从中检查我的a.tcl是否进入无限循环?如果我的a.tcl进入无限循环,是否可以调用“你的a.tcl进入无限循环”的特定函数 在c语言中有一种定时器函数 希望我清楚 谢谢看看interp limit函数,它允许类似的功能 检测无限循环类似于停止问题,因此,您只能设置希望等待的超时,而不能在一般情况下真正检测是否存在无限循环 在某些特殊情况下,如果您试图创建无限循环,Tcl会发出警告,尤其是在没有注册事

TCL中是否有任何机制可以检查TCL脚本是否进入无限循环

比如说,, 我有Test.tcl,我想从中检查我的a.tcl是否进入无限循环?如果我的a.tcl进入无限循环,是否可以调用“你的a.tcl进入无限循环”的特定函数

在c语言中有一种定时器函数

希望我清楚


谢谢

看看
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')