Posted to tcl by aspect at Fri Aug 17 13:03:17 GMT 2012view pretty

set signals {ALRM HUP INT KILL PIPE POLL PROF TERM USR1 USR2 VTALRM STKFLT PWR WINCH CHLD URG TSTP TTIN TTOU STOP CONT ABRT FPE ILL QUIT SEGV TRAP SYS EMT BUS XCPU XFSZ}

package require Tclx

set log [open signal_log.txt w]
puts $::log "Starting ..."
flush $::log

proc signal_handler {args} {
    puts "Got signal: $args"
    puts $::log "Got signal: $args"
    flush $::log
}

foreach signal $signals {
    if {[catch {
        signal trap $signal [list signal_handler $signal]
    }]} {
        puts "Cannot trap $signal"
    }
}

while {![eof stdin]} {
    catch {puts [gets stdin]}
}
puts "eof?"