[ Tcl ] 非阻塞模式启动外部程序,并接收返回值的方法
https://www.cnblogs.com/yeungchie/
Callback 函数
proc Callback { handle } {
variable line
if { [catch {gets $handle line}] || [chan eof $handle]} {
# 这里 gets 当获取失败,或者遇到 End Of File 时,关闭管道
catch {close $handle}
} else {
puts "$line"
flush stdout
}
}
先创建一个函数用来接受返回值
启动外部程序
set fh [open "| python SyncViewConfigure.py" r]
这里运行外部程序,并返回 $fh
设置 $fh 为非阻塞模式
chan configure $fh -blocking 0
注册事件触发 Callback 函数
chan event $fh readable [list Callback $fh]
函数输入值为 $fh