1 ! Copyright (C) 2011 Joe Groff.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: accessors assocs io kernel math namespaces sequences
9 "SIGHUP" "SIGINT" "SIGQUIT" "SIGILL" "SIGTRAP" "SIGABRT"
10 "SIGEMT" "SIGFPE" "SIGKILL" "SIGBUS" "SIGSEGV" "SIGSYS"
11 "SIGPIPE" "SIGALRM" "SIGTERM" "SIGURG" "SIGSTOP" "SIGTSIP"
12 "SIGCONT" "SIGCHLD" "SIGTTIN" "SIGTTOU" "SIGIO" "SIGXCPU"
13 "SIGXFSZ" "SIGVTALRM" "SIGPROF" "SIGWINCH" "SIGINFO"
19 GENERIC: signal-name ( obj -- str/f )
21 M: signal signal-name n>> signal-name ;
23 M: integer signal-name 1 - signal-names ?nth ;
25 : signal-name. ( n -- )
26 signal-name [ " (" ")" surround write ] when* ;
28 SYMBOL: dispatch-signal-hook
30 dispatch-signal-hook [ [ drop ] ] initialize
34 SYMBOL: signal-handlers
36 signal-handlers [ H{ } ] initialize
38 : dispatch-signal ( sig -- )
39 signal-handlers get-global at [ in-thread ] each ;
43 : add-signal-handler ( handler: ( -- ) sig -- )
44 signal-handlers get-global push-at ;
46 : remove-signal-handler ( handler sig -- )
47 signal-handlers get-global at [ remove! drop ] [ drop ] if* ;
49 [ dispatch-signal ] dispatch-signal-hook set-global