首页 > 解决方案 > tcl子进程执行异常

问题描述

我在这里使用代码来并行运行一些进程。

https://wiki.tcl-lang.org/page/Execute+in+Parallel+and+Wait

这是我修改过的代码。

foreach scenario $scenario_list {
    set script {            
        set sname $scenario
        puts "Scenario: $sname"          
        set sdir "$curr_dir/$sname"
        puts "Results from: $sdir"
        extract_system_kpis $sname "SUCCESS" $sdir $hw_instance_list $hbm_scheduler_pairs
    }
    set chan [open |[list [info nameofexecutable] <<$script 2>@stderr]] 
    dict set res $chan command $script
    fconfigure $chan -blocking 0
    lappend background $chan
}

while 1 {
    foreach chan $background {
        if {[eof $chan]} {
            fconfigure $chan -blocking 1
            if {[set idx [lsearch -exact $background $chan]] >= 0} {
                set background [lreplace $background $idx $idx]
            }
            catch [close $chan] cres copts
            dict set res $chan result $cres
            dict set res $chan options $copts
        } else {
            puts -nonewline [read $chan]
        }
    }
    if {[llength $background] == 0} {
        break
    }
    after 100
}
return $res

执行“close $chan”时出现错误子进程异常退出

有任何想法吗?我正在运行 TCL 8.6

谢谢

标签: processtcl

解决方案


推荐阅读