# -*- tcl -*- cd /u/ian/things/Bessar/trains exec xsetroot -solid #00000f set trainscmd { set -x savelog -c 7 bessar.log # (set -ex cd /u/ian/things/trains-bessar/hostside ./stopgap-controller | ./gui-displayer - # ) 2>&1 | tee bessar.log } proc trains_start {} { global trainsf trainscmd trains_stop set cmdl [list sh -ec $trainscmd 2>@ stderr] set trainsf [open |$cmdl w] fconfigure $trainsf -buffering none -blocking no } proc tw {s} { global trainsf if {![info exists trainsf]} return if {[catch { puts $trainsf $s } emsg]} { puts stderr "tw: $emsg" trains_stop } } proc okagain {} { global okagain set okagain 1 } proc trains_stop {} { global trainsf okagain if {![info exists trainsf]} return catch { close $trainsf } unset trainsf after 3000 okagain vwait okagain }