Posted to tcl by aspect at Sat Feb 28 01:08:04 GMT 2015view pretty
set fd [open "|ping csiro.au" r] chan configure $fd -blocking 0 chan event $fd readable [list pong $fd] proc pong {fd} { set ln [gets $fd] if {$ln eq ""} { if {[eof $fd]} { puts "Ping died!" close $fd after idle finished return } } puts "Pong! $ln" } after 5000 [list finished $fd] proc finished {fd} { puts "Killing ping" catch {close $fd} exit } vwait forever