Posted to tcl by crshults at Mon Jun 15 18:46:57 GMT 2015view pretty
set port 9000 set sock "" proc read_data {sock} { puts [read $sock] if {[chan eof $sock]} { puts "chan is eof" chan event $sock readable {} chan close $sock } } proc uniform {str} { global port set ::sock [socket localhost $port] chan configure $::sock -translation binary -buffering none -blocking no set msg "RCTL\nBEGIN\n${str}\nEND" chan event $::sock readable "read_data $::sock" chan puts $::sock $msg } uniform "some task" set dead no proc heartbeat {} { if {[catch {puts $::sock .}]} { set ::dead yes } after 1000 heartbeat } proc check_for_death {args} { if {$::dead eq "yes"} { puts "yeah,... we're dead." } } trace add variable dead write check_for_death heartbeat