Posted to tcl by mr_calvin at Wed Sep 30 06:48:08 GMT 2020view pretty

set pipe [open "|ls"]
chan configure $pipe -blocking 0

set handler [list pr {
    puts RUN=[incr [namespace current]::RUN]
    if {[eof $pr]} {
	chan close $pr
	set [namespace current]::done 1
    } else {
	set result [read $pr]
	puts RESULT='$result'
    }
} [namespace current]]

chan event $pipe readable [list apply $handler $pipe]

vwait [namespace current]::done