如何打破tcl中的每一个循环
当主作业正在运行时,需要在一定的持续时间内运行一段代码。 基本上,一些工具正在编写日志文件,在编写日志文件的过程中,我使用grep查找该日志文件中的错误/警告 我使用每个循环检查作业正在运行的条件,然后编写一个错误/警告数据库,如果作业没有运行,它将打印消息。 问题:一旦它发现作业正在运行,每个循环都会被踢到它身上,即使else条件为false,它也不会停止 我使用了中断if循环,但不起作用。 如何停止每个循环,请建议如何打破tcl中的每一个循环,tcl,tk,Tcl,Tk,当主作业正在运行时,需要在一定的持续时间内运行一段代码。 基本上,一些工具正在编写日志文件,在编写日志文件的过程中,我使用grep查找该日志文件中的错误/警告 我使用每个循环检查作业正在运行的条件,然后编写一个错误/警告数据库,如果作业没有运行,它将打印消息。 问题:一旦它发现作业正在运行,每个循环都会被踢到它身上,即使else条件为false,它也不会停止 我使用了中断if循环,但不起作用。 如何停止每个循环,请建议 proc every {ms body} { eval $body
proc every {ms body} {
eval $body
after $ms [info level 0]
}
proc run_this_loop {} {
catch {set job_name [exec qstat | awk {{print $3}} | grep liberate]} error
if {[string match *abnormally* $error]} {
puts "No background liberate job is found\n"
} else {
every 10000 {grepLoop}
}
}
every 1000 {run_this_loop}
我意识到我的看涨代码
proc run_this_loop {} {
catch {set job_name [exec qstat | awk {{print $3}} | grep liberate]} error
if {[string match *abnormally* $error]} {
puts "No background liberate job is found\n"
} else {
grepLoop
}
}
我不需要每一个内-外循环,删除每一个内-外循环可以解决我的问题。
如果有任何优化方法,请提出建议。。。
我仍然需要知道如何打破每一个循环。我意识到我的看涨代码
proc run_this_loop {} {
catch {set job_name [exec qstat | awk {{print $3}} | grep liberate]} error
if {[string match *abnormally* $error]} {
puts "No background liberate job is found\n"
} else {
grepLoop
}
}
我不需要每一个内-外循环,删除每一个内-外循环可以解决我的问题。
如果有任何优化方法,请提出建议。。。
我仍然需要知道如何打破each循环。一个简单的方法是在调用后保存
的id,并使用它来取消:
proc every {ms body} {
global id
eval $body
set id [after $ms [info level 0]]
}
every 2000 {puts foo}
after cancel $id
文件:
,
,
,
,
,
,
一种简单的方法是在调用后保存的id,并使用它来取消:
proc every {ms body} {
global id
eval $body
set id [after $ms [info level 0]]
}
every 2000 {puts foo}
after cancel $id
文件:
,
,
,
,
,
,