我有一个代码,如下所示。 我使用hv(Altair超级视图)执行此操作,以加载并拍摄FE结果。
这是我在Linux终端上看到的结果日志:
*Ready
Loading Report...
Applying Report...
Ready
Ready
Capturing...
Ready*
它停留在“就绪”状态,除非我按Ctrl + c或输入它,否则它不会返回到终端。 proc结束后,如何使代码退出终端?
所以我刚刚发现这些命令作为子进程运行,这就是为什么我无法使用exit命令将其杀死的原因。
proc BatchMain { } {
set inputdeck [lindex $::argv 6]
set resultfile [lindex $::argv 7]
puts $inputdeck
puts $resultfile
set t [::post::GetT]
hwi GetSessionHandle sess$t
sess$t GetProjectHandle proj$t
hwi OpenStack
sess$t LoadReport Batch_Process.tpl
sess$t ApplyReport Batch_Process replace true false 2 $inputdeck $resultfile
set numpages [proj$t GetNumberOfPages];
for {set i 1} {$i <= $numpages} {incr i} {
proj$t SetActivePage $i
proj$t GetPageHandle pg$t $i
pg$t Draw
pg$t ReleaseHandle
sess$t CaptureScreen png image_$i.png
}
hwi CloseStack
proj$t ReleaseHandle
sess$t Close
}
BatchMain
答案 0 :(得分:0)
停止Tcl程序的典型方法是调用exit
命令。您可以将其放在您的BatchMain
中,或作为自己的调用:
# ... procedure definition as in the question ...
BatchMain
exit
exit
命令带有一个可选的退出代码参数,具有退出代码含义的常规定义,其中0
是默认值。在正常情况下,exit
根本没有Tcl结果,因为从脚本的角度来看它永远不会完成执行。
在某些情况下,Tcl将为您呼叫exit
。其中最引人注目的是当执行脱离经典tclsh
脚本的结尾时。