/** * Information in this module is taken from the GNU core-utils * manual, process control section. * * http://www.gnu.org/manual/coreutils-4.5.4/coreutils.html */ module system/posix/signal signature constructors Signal: String * Int * String -> Signal UnknownSignal: Int -> Signal strategies // :: Int -> Signal signal-from-number = ?i; ( <fetch-elem(?Signal(_, i, _))> AllSignals() <+ !UnknownSignal(i)) // :: Signal -> Int number-from-signal : Signal(_, i, _) -> i number-from-signal : UnknownSignal(i) -> i // :: Signal -> String signal-to-descr : Signal(n, i, s) -> <concat-strings> [n, " (", <int-to-string> i, "): ", s] signal-to-descr : UnknownSignal(i) -> <concat-strings> ["Unknown signal (", <int-to-string> i, ")"] overlays /** * Table containing all signals. */ AllSignals = [ SIGHUP(), SIGINT(), SIGQUIT(), SIGABRT(), SIGKILL(), SIGALRM(), SIGTERM() , SIGBUS(), SIGCHLD(), SIGCONT(), SIGFPE(), SIGILL(), SIGPIPE(), SIGSEGV() , SIGSTOP(), SIGTSTP(), SIGTTIN(), SIGTTOU(), SIGURG(), SIGUSR1(), SIGUSR2() , SIGPOLL(), SIGPROF(), SIGSYS(), SIGTRAP(), SIGVTALRM(), SIGXCPU(), SIGXFSZ() ] /** * POSIX */ overlays SIGHUP = Signal("HUP", 1, "Hangup") SIGINT = Signal("INT", 2, "Terminal interrupt") SIGQUIT = Signal("QUIT", 3, "Terminal quit") SIGABRT = Signal("ABRT", 6, "Process abort") SIGKILL = Signal("KILL", 9, "Kill") SIGALRM = Signal("ALRM", 14, "Alarm Clock") SIGTERM = Signal("TERM", 15, "Termination") /** * POSIX 1003.1-2001 */ overlays SIGBUS = Signal("BUS", 7, "Access to an undefined portion of a memory object") SIGCHLD = Signal("CHLD", 17, "Child process terminated, stopped, or continued") SIGCONT = Signal("CONT", 18, "Continue executing, if stopped") SIGFPE = Signal("FPE", 8, "Erroneous arithmetic operation") SIGILL = Signal("ILL", 4, "Illegal Instruction") SIGPIPE = Signal("PIPE", 13, "Write on a pipe with no one to read it") SIGSEGV = Signal("SEGV", 11, "Invalid memory reference") SIGSTOP = Signal("STOP", 19, "Stop executing") SIGTSTP = Signal("TSTP", 20, "Terminal stop") SIGTTIN = Signal("TTIN", 21, "Background process attempting read") SIGTTOU = Signal("TTOU", 22, "Background process attempting write") SIGURG = Signal("URG", 23, "High bandwidth data is available at a socket") SIGUSR1 = Signal("USR1", 10, "User-defined signal 1") SIGUSR2 = Signal("USR2", 12, "User-defined signal 2") /** * POSIX 1003.1-2001, XSI extension */ overlays SIGPOLL = Signal("POLL", 29, "Pollable event") SIGPROF = Signal("PROF", 27, "Profiling timer expired") SIGSYS = Signal("SYS", 31, "Bad system call") SIGTRAP = Signal("TRAP", 5, "Trace/breakpoint trap") SIGVTALRM = Signal("VTALRM", 26, "Virtual timer expired") SIGXCPU = Signal("XCPU", 24, "CPU time limit exceeded") SIGXFSZ = Signal("XFSZ", 25, "File size limit exceeded")