Posted to tcl by mpcjanssen at Wed Jul 31 12:28:25 GMT 2019view pretty
proc test {args} {puts $args ; return "initialize watch finalize read write"} proc nexec {cmd in out stderr} { lassign [chan pipe] in1 out1 lassign [chan pipe] in2 out2 lassign [chan pipe] in3 out3 puts [exec {*}$cmd >@ $out2 2>@ $out3 <@ $in1 &] fileevent $in2 readable [list chan copy $in2 $out] fileevent $in3 readable [list chan copy $in3 $stderr] fileevent $out1 writable [list chan copy $in $out1] } proc test {args} { puts $args set rest [lassign $args mode chan] switch -exact $mode { read {puts $chan "Test" ; close $chan} initialize {return "initialize watch finalize read write"} finalize {} } } set c [chan create "read write" test] nexec {ls} $c $c $c vwait forever