Posted to tcl by venks at Sun Oct 15 19:29:06 GMT 2017view pretty

1.
set fi [open "|$args"]
puts stderr <<<<[read $fi]>>>>
close $fi

2.
set fi [open "|$args"]
chan configure $fi -blocking 0 -buffering line -translation binary
chan event $fi readable [list [info coroutine] line]
set linum 0
while {1} {
   set r [yield]
   if {[set r [gets $fi line]] < 0} {
     l Finished after $linum lines ($r)
     break
   }
   incr linum
   puts $fo $line
}
close $fi

1 gives me 10 lines.  2 gives me 6 lines consistently.  What am I missing?