Posted to tcl by kostix at Sat Nov 07 17:52:49 GMT 2009view pretty

set active 0

proc Spawn what {
  variable active
  set fd [open "| $what &"]
  fileevent $fd readable [list ReadLine $fd]
  incr active
}

proc ReadLine fd {
  if {[gets $fd line] < 0} {
    incr active -1
    if {$active == 0} {
      set ::done 1
    }
  }
}

Spawn my_program
# repeat N times

vwait done