The procedures described in this section (except unix-kill, unix-list-signals, and unix-pause) are only defined if the local system supports reliable signals (either BSD-style or POSIX signals). In this case, the feature unix:reliable-signals is provided when the UNIX extension is loaded.
(unix-kill pid signal)
The UNIX kill() system call.
pid is an integer; sig is either an integer (a signal
number) or a symbol (a
At least the following signal names are supported:
+----------------------------+ | Signal names | +----------------------------+ |sigalrm sigbus sigfpe | |sighup sigill sigint | |sigkill sigpipe sigquit | |sigsegv sigterm | +----------------------------+
The list of signal names actually supported by the local system can be obtained by calling unix-list-signals (see below).
unix-kill returns the non-printing object.
This procedure returns a list of signal names (symbols) that are supported by the system.
The UNIX alarm() function. seconds is a positive integer. unix-alarm returns the number of seconds remaining from the previously set alarm.
The UNIX pause() function. This procedure does not return.
(unix-signal sig action)
unix-signal defines or queries the action to be performed when a signal is delivered to the program. If an action argument is specified, this action is associated with the signal sig, and the previous action for this signal is returned. If no action is given (second form), unix-signal just returns the action currently associated with sig.
sig is the name of a signal (see unix-kill for a description). The action associated with sigbus, sigfpe, sigill, sigint, sigkill, sigsegv, and sigabrt (if supported) cannot be altered; either because UNIX does not permit this (sigkill), or because the signal can be generated as the result of an internal fatal error (sigbus etc.), or because it is used by the interpreter internally (sigsegv is used by the incremental garbage collector). The action associated with the interrupt signal can be controlled by redefining the standard Elk interrupt-handler (see the Elk reference manual for details).
action can be one of the following:
The procedure specified as a signal handler must accept one or more arguments. When the signal is delivered, the procedure is invoked with the signal name (a symbol) as an argument. Signal handlers must not return (i.e. they must either exit or call a continuation). If a signal handler returns, a message is displayed and the reset primitive is called.
The signal specified as an argument to unix-signal is added to (removed from) the signal mask maintained by the interpreter, i.e. calls to the disable-interrupts primitive block the signal from delivery.
unix-signal returns the previous (current) action for the
specified signal (a procedure or ignore, default, or
exit) or the symbol handler to indicate that the
signal is handled internally by the interpreter.