The trivial-signal Reference Manual

Table of Contents

Next: , Previous: , Up: (dir)   [Contents][Index]

The trivial-signal Reference Manual

This is the trivial-signal Reference Manual, version 0.1.0, generated automatically by Declt version 2.3 "Robert April" on Wed Mar 14 04:41:24 2018 GMT+0.


Next: , Previous: , Up: Top   [Contents][Index]

1 Introduction

trivial-signal Build Status

Trivial-signal is a Common Lisp UNIX signal handling library.

News : now equipped with nested signal handling capability & multithreads! See `Threading Policy`` below. (Masataro Asai)

News : Maintainer has changed. Thanks Fukamachi! (Masataro Asai)

News : It now uses CFFI-grovel to obtain the signal numbers. It now recognizes much more signals e.g. SIGRTMIN. I hope it works even on SPARK !

TODO : exit handlers (with atexit)

Requirements :

Installation :

cd ~/common-lisp/
git clone https://github.com/guicho2.71828/trivial-signal.git
(ql:quickload :trivial-signal)

Usage : Toplevel Handlers

(use-package :trivial-signal)
(defun exit-on-signal (signo)
  (format *error-output* "~&received ~A~%" (signal-name signo))
  (sb-ext:exit :code 1 :abort t))
(setf (signal-handler :term) #'exit-on-signal) ;; :term can also be :sigterm or 15

(loop (sleep 3))

;; now run `kill -15 $PID` on the terminal to run `exit-on-signal`

Above example shows the usage of toplevel handlers. Toplevel handlers are system wide and (in most cases) static.

Usage: SIGNAL-HANDLER-BIND

The next important usage of trivial-signal is to establish handlers dynamically by signal-handler-bind. The scope of this kind of signal handlers are thread-local.

When the main process receives a signal, handlers are called in the same way as in handler-bind : the top handler in the innermost signal-handler-bind is called first.

(use-package :trivial-signal)

(tagbody
  (signal-handler-bind ((15 (lambda (c) (print :first)))
                        (15 (lambda (c) (print :escaping) (go :escape)))
                        ;; mixing different handlers is ok
                        (2  (lambda (c) (print :escaping) (go :escape)))
                        ;; once the signal is handled, remaining handlers are not called
                        (15 (lambda (c) (print :this-should-not-be-called))))
    (loop (sleep 3))) ;; now send signal 15 from the terminal
  :escape
  (print :success!))

(tagbody
  ;; nested handlers are called from the most recently established ones.
  ;; If the handler declines, the next innermost one is called.
  (signal-handler-bind ((15 (lambda (c) (print :this-should-not-be-called))))
    (signal-handler-bind ((15 (lambda (c) (print :escaping) (go :escape))))
      (signal-handler-bind ((15 (lambda (c) (print :most-recent))))
        (loop (sleep 3)))))
  :escape
  (print :success!))

If all these thread-local handlers decline, then the toplevel handlers are called. If that declines again, then a common-lisp condition unix-signal is signaled in that context.

Signal Handling Internal

Signals are handled by C-level posix signal(8) API with which we set a low-level handler through CFFI.

Some Signals may not Work Right

Note that, depending on the lisp implementation, some signals may not be captured. This is related to the implementations' internal, which may use signals internally for their own sake (such as thread manipulation).

At least I checked the following signals work:

To see which signals works on your environment, see TESTING.org

Threading Policy

The C-level signal handlers call a lisp function, which interrupts each thread who has thread-local signal handlers established by signal-handler-bind.

Signals directly sent to each thread might not be captured by trivial-signal. The behavior is currently undefined. Our advise is that they should be sent to the main process.

This is again related to the internal behavior of the implementations. For example, on SBCL, signals sent to the main process are not distributed to each thread. However, CCL seems to distribute the signals.

API

sigspec API

Signals can be either specified by its number or by its name. In trivial-signal, the name can be specified with keywords. Below examples should be sufficient :

Note that the signal number actually depends on the OS you are using. These numbers are obtained by cffi-grovel, therefore OS level compatibility is now fixed.

[Function] signal-name (signo)

This returns the name of SIGNO as a keyword.

(signal-name 15)
;=> :TERM

[Function] signal-number (signame)

This returns the number of SIGNAME as an integer.

(signal-number :term)
;=> 15

Thread-local handlers API

[Macro] signal-handler-bind ([(sigspec handler)]* &body forms)

This executes FORMS in an environment where signal handler bindings are in effect.

(signal-handler-bind ((:term (lambda (signo)
                               (declare (ignore signo))
                               (sb-ext:exit :abort t)))
                      (:int  (lambda (signo)
                               (princ (signal-name signo) *error-output*))))
  ;; do something.
  )

[Function] call-signal-handler-bind (new-signal-handlers fn)

Run FN in a dynamic environment where the signal handler bindings are in effect. new-signal-handlers is a cons tree of ((signo handler ...) ...). This is rather an internal function which signal-handler-bind expands into. Use this function when you want to dynamically alter the signal to be captured.

Note that, trivial-signal only considers the first appearance of (signo handlers...) with the matching signo in the same layer. For example,

(call-signal-handler-bind
 `((,*signo* ,(lambda (c) (lprint :first))
             ,(lambda (c) (lprint :escaping) (go :escape))
             ,(lambda (c) (lprint :this-should-not-be-called))))
 (lambda () ...))

is okay but

(call-signal-handler-bind
 `((,*signo* ,(lambda (c) (lprint :first)))
   (,*signo* ,(lambda (c) (lprint :escaping) (go :escape)))
   (,*signo* ,(lambda (c) (lprint :this-should-not-be-called))))
 (lambda () ... ))

is incorrect (the 2nd and 3rd handlers are ignored). If you want to do it, wrap the main code in the (lambda () ...) with another call-signal-handler-bind. (Also, the macro signal-handler-bind automatically solve this.)

[Macro] with-signal-handler (signal fn &body forms)

(deprecated) This executes FORMS in an environment where a signal handler FN for a signal SIGNAL is in effect.

(with-signal-handler :term (lambda (signo)
                             (declare (ignore signo))
                             (sb-ext:exit :abort t))
  ;; do something.
  )

Toplevel handlers

Toplevel handlers are system wide, global handlers that capture the signals sent to the main process. The functionality of the toplevel signal handlers are analogous to *debugger-hook*. When the lisp process receives a signal, it is handled by these toplevel handlers unless some nested signal handlers (described later) handles it.

(use-package :trivial-signal)
(defun exit-on-signal (signo)
  (format *error-output* "~&received ~A~%" (signal-name signo))
  (sb-ext:exit :code 1 :abort t))

(signal-handler :term) ;=> NIL
(setf (signal-handler :term) #'exit-on-signal)
;=> #<FUNCTION (LAMBDA (SIGNO)) {1005764E3B}>

(signal-handler :term)
;=> #<FUNCTION (LAMBDA (SIGNO)) {1005764E3B}>
;   T

;; Removing a signal handler.
(setf (signal-handler :term) nil) ; or: (remove-signal-handler :term) (deprecated)
;=> T

;; Clearing all signal handlers.
(remove-all-signal-handlers)

[Function] signal-handler (signal)

This returns a signal handler for a signal SIGNAL.

SIGNAL can be either a keyword or an integer.

(signal-handler :term)
(signal-handler 15)
(signal-handler +sigterm+)

[Function] (setf signal-handler) (fn signal)

This sets a signal handler FN for a signal SIGNAL.

FN must be a function or a symbol of a function name, which takes one argument as a signal number. Otherwise FN should be NIL, indicating the handler should be removed.

(setf (signal-handler :term)
      #'(lambda (signo)
          (princ (signal-name signo) *error-output*)))

[Function] remove-signal-handler (signal)

(deprecated) This removes a signal handler from a signal SIGNAL.

[Function] remove-all-signal-handlers ()

This clears all signal handlers.

Author

License

Trivial-signal is free and unencumbered software released into the public domain.


Next: , Previous: , Up: Top   [Contents][Index]

2 Systems

The main system appears first, followed by any subsystem dependency.


Previous: , Up: Systems   [Contents][Index]

2.1 trivial-signal

Author

Eitaro Fukamachi

License

Public Domain

Description

Unix signal handling library.

Long Description

# trivial-signal [![Build Status](https://travis-ci.org/guicho271828/trivial-signal.svg)](https://travis-ci.org/guicho271828/trivial-signal)

Trivial-signal is a Common Lisp UNIX signal handling library.

**News** : now equipped with nested signal handling capability &
multithreads! See ‘Threading Policy“ below. (Masataro Asai)

**News** : Maintainer has changed. Thanks Fukamachi! (Masataro Asai)

**News** : It now uses CFFI-grovel to obtain the signal numbers. It now
recognizes much more signals e.g. SIGRTMIN. I hope it works even on SPARK !

**TODO** : exit handlers (with ‘atexit‘)

**Requirements** :
* [CFFI](http://common-lisp.net/project/cffi/)
* [Bordeaux-threads](http://trac.common-lisp.net/bordeaux-threads/wiki/ApiDocumentation)

**Installation** :
“‘
cd ~/common-lisp/
git clone https://github.com/guicho2.71828/trivial-signal.git
“‘

“‘common-lisp
(ql:quickload :trivial-signal)
“‘

## Usage : Toplevel Handlers

“‘common-lisp
(use-package :trivial-signal)
(defun exit-on-signal (signo)
(format *error-output* "~&received ~A~%" (signal-name signo))
(sb-ext:exit :code 1 :abort t))
(setf (signal-handler :term) #’exit-on-signal) ;; :term can also be :sigterm or 15

(loop (sleep 3))

;; now run ‘kill -15 $PID‘ on the terminal to run ‘exit-on-signal‘
“‘

Above example shows the usage of **toplevel handlers**.
Toplevel handlers are system wide and (in most cases) static.

## Usage: SIGNAL-HANDLER-BIND

The next important usage of trivial-signal is
to establish handlers dynamically by ‘signal-handler-bind‘.
The scope of this kind of signal handlers are thread-local.

When the main process receives a signal,
handlers are called in the same way as in ‘handler-bind‘ : the
top handler in the innermost ‘signal-handler-bind‘ is called first.

“‘COMMON-LISP
(use-package :trivial-signal)

(tagbody
(signal-handler-bind ((15 (lambda (c) (print :first)))
(15 (lambda (c) (print :escaping) (go :escape)))
;; mixing different handlers is ok
(2 (lambda (c) (print :escaping) (go :escape)))
;; once the signal is handled, remaining handlers are not called
(15 (lambda (c) (print :this-should-not-be-called))))
(loop (sleep 3))) ;; now send signal 15 from the terminal
:escape
(print :success!))

(tagbody
;; nested handlers are called from the most recently established ones.
;; If the handler declines, the next innermost one is called.
(signal-handler-bind ((15 (lambda (c) (print :this-should-not-be-called))))
(signal-handler-bind ((15 (lambda (c) (print :escaping) (go :escape))))
(signal-handler-bind ((15 (lambda (c) (print :most-recent))))
(loop (sleep 3)))))
:escape
(print :success!))
“‘

If all these thread-local handlers decline, then the toplevel handlers are called.
If that declines again, then a common-lisp condition ‘unix-signal‘ is
signaled in that context.

# Signal Handling Internal

Signals are handled by C-level posix ‘signal(8)‘ API
with which we set a low-level handler through CFFI.

## Some Signals may not Work Right

Note that, depending on the lisp implementation, some signals may not be
captured. This is related to the implementations’ internal, which may use
signals internally for their own sake (such as thread manipulation).

At least I checked the following signals work:

+ on SBCL x86_64, 4-8, 10-11, 16, 18, 21-22, 30-31, 34-64 (SIGRTMIN-SIGRTMAX)
+ if you set a signal handler on 13 (SIGPIPE), sbcl hangs up
+ on CCL x86_64, 1-3,6,8,10,12-14,16-18,21-24,26-29,31, 34-64 (SIGRTMIN-SIGRTMAX)

To see which signals works on your environment, see [TESTING.org](https://github.com/guicho271828/trivial-signal/blob/master/TESTING.org)

## Threading Policy

The C-level signal handlers call a lisp function, which interrupts each
thread who has thread-local signal handlers established by
‘signal-handler-bind‘.

Signals directly sent to each thread might not be captured by ‘trivial-signal‘.
The behavior is currently undefined.
Our advise is that they should be sent to the main process.

This is again related to the internal behavior of the implementations.
For example, on SBCL, signals sent to the main process are not
distributed to each thread. However, CCL seems to distribute the signals.

# API
## sigspec API

Signals can be either specified by its number or by its name.
In ‘trivial-signal‘, the name can be specified with keywords.
Below examples should be sufficient :

+ 15, :term, :sigterm (additionally, constant ‘+sigterm+‘ is bound to 15)
+ 2, :int, :sigint (additionally, constant ‘+sigint+‘ is bound to 2 )
+ 24, :xcpu, :sigxcpu (additionally, constant ‘+sigxcpu+‘ is bound to 24)

Note that the signal number actually depends on the OS you are using.
These numbers are obtained by ‘cffi-grovel‘, therefore OS level
compatibility is now fixed.

### [Function] signal-name (signo)

This returns the name of ‘SIGNO‘ as a keyword.

“‘common-lisp
(signal-name 15)
;=> :TERM
“‘

### [Function] signal-number (signame)

This returns the number of ‘SIGNAME‘ as an integer.

“‘common-lisp
(signal-number :term)
;=> 15
“‘
## Thread-local handlers API

#### [Macro] signal-handler-bind ([(sigspec handler)]* &body forms)

This executes ‘FORMS‘ in an environment where signal handler bindings are in effect.

“‘common-lisp
(signal-handler-bind ((:term (lambda (signo)
(declare (ignore signo))
(sb-ext:exit :abort t)))
(:int (lambda (signo)
(princ (signal-name signo) *error-output*))))
;; do something.
)
“‘

#### [Function] call-signal-handler-bind (new-signal-handlers fn)

Run FN in a dynamic environment where the signal handler bindings are
in effect. ‘new-signal-handlers‘ is a cons tree of ((signo handler ...) ...).
This is rather an internal function which signal-handler-bind expands into.
Use this function when you want to dynamically alter the signal to be captured.

Note that, trivial-signal only considers the first appearance of (signo handlers...)
with the matching signo in the same layer. For example,

(call-signal-handler-bind
‘((,*signo* ,(lambda (c) (lprint :first))
,(lambda (c) (lprint :escaping) (go :escape))
,(lambda (c) (lprint :this-should-not-be-called))))
(lambda () ...))

is okay but

(call-signal-handler-bind
‘((,*signo* ,(lambda (c) (lprint :first)))
(,*signo* ,(lambda (c) (lprint :escaping) (go :escape)))
(,*signo* ,(lambda (c) (lprint :this-should-not-be-called))))
(lambda () ... ))

is incorrect (the 2nd and 3rd handlers are ignored).
If you want to do it, wrap the main code in the ‘(lambda () ...)‘
with another call-signal-handler-bind.
(Also, the macro ‘signal-handler-bind‘ automatically solve this.)

#### [Macro] with-signal-handler (signal fn &body forms)

(deprecated)
This executes ‘FORMS‘ in an environment where a signal handler ‘FN‘ for a signal ‘SIGNAL‘ is in effect.

“‘common-lisp
(with-signal-handler :term (lambda (signo)
(declare (ignore signo))
(sb-ext:exit :abort t))
;; do something.
)
“‘

## Toplevel handlers

Toplevel handlers are system wide, global handlers that capture the signals
sent to the main process.
The functionality of the toplevel signal handlers are analogous to ‘*debugger-hook*‘.
When the lisp process receives a signal,
it is handled by these toplevel handlers
**unless** some nested signal handlers (described later) handles it.

“‘common-lisp
(use-package :trivial-signal)
(defun exit-on-signal (signo)
(format *error-output* "~&received ~A~%" (signal-name signo))
(sb-ext:exit :code 1 :abort t))

(signal-handler :term) ;=> NIL
(setf (signal-handler :term) #’exit-on-signal)
;=> #<FUNCTION (LAMBDA (SIGNO)) {1005764E3B}>

(signal-handler :term)
;=> #<FUNCTION (LAMBDA (SIGNO)) {1005764E3B}>
; T

;; Removing a signal handler.
(setf (signal-handler :term) nil) ; or: (remove-signal-handler :term) (deprecated)
;=> T

;; Clearing all signal handlers.
(remove-all-signal-handlers)
“‘

#### [Function] signal-handler (signal)

This returns a signal handler for a signal ‘SIGNAL‘.

‘SIGNAL‘ can be either a keyword or an integer.

“‘common-lisp
(signal-handler :term)
(signal-handler 15)
(signal-handler +sigterm+)
“‘

#### [Function] \(setf signal-handler) (fn signal)

This sets a signal handler ‘FN‘ for a signal ‘SIGNAL‘.

‘FN‘ must be a function or a symbol of a function name, which takes one
argument as a signal number.
Otherwise ‘FN‘ should be ‘NIL‘, indicating the handler should be removed.

“‘common-lisp
(setf (signal-handler :term)
#’(lambda (signo)
(princ (signal-name signo) *error-output*)))
“‘

#### [Function] remove-signal-handler (signal)

(deprecated) This removes a signal handler from a signal ‘SIGNAL‘.

#### [Function] remove-all-signal-handlers ()

This clears all signal handlers.

## Author

* Eitaro Fukamachi (e.arrows@gmail.com) (author)
* Masataro Asai (guicho2.71828@gmai.com) (maintainer)

## License

Trivial-signal is free and unencumbered software released into the public domain.

Version

0.1.0

Defsystem Dependency

cffi-grovel

Dependencies
Source

trivial-signal.asd (file)

Component

src (module)


Next: , Previous: , Up: Top   [Contents][Index]

3 Modules

Modules are listed depth-first from the system components tree.


Previous: , Up: Modules   [Contents][Index]

3.1 trivial-signal/src

Parent

trivial-signal (system)

Location

src/

Components

Next: , Previous: , Up: Top   [Contents][Index]

4 Files

Files are sorted by type and then listed depth-first from the systems components trees.


Previous: , Up: Files   [Contents][Index]

4.1 Lisp


Next: , Previous: , Up: Lisp files   [Contents][Index]

4.1.1 trivial-signal.asd

Location

trivial-signal.asd

Systems

trivial-signal (system)

Packages

trivial-signal-asd


Next: , Previous: , Up: Lisp files   [Contents][Index]

4.1.2 trivial-signal/src/packages.lisp

Parent

src (module)

Location

src/packages.lisp

Packages

Next: , Previous: , Up: Lisp files   [Contents][Index]

4.1.3 trivial-signal/src/grovel.lisp

Dependency

packages.lisp (file)

Parent

src (module)

Location

src/grovel.lisp


Next: , Previous: , Up: Lisp files   [Contents][Index]

4.1.4 trivial-signal/src/signals.lisp

Dependency

grovel.lisp (file)

Parent

src (module)

Location

src/signals.lisp

Exported Definitions
Internal Definitions

Previous: , Up: Lisp files   [Contents][Index]

4.1.5 trivial-signal/src/trivial-signal.lisp

Dependency

signals.lisp (file)

Parent

src (module)

Location

src/trivial-signal.lisp

Exported Definitions
Internal Definitions

Next: , Previous: , Up: Top   [Contents][Index]

5 Packages

Packages are listed by definition order.


Next: , Previous: , Up: Packages   [Contents][Index]

5.1 trivial-signal-asd

Source

trivial-signal.asd

Use List

Next: , Previous: , Up: Packages   [Contents][Index]

5.2 trivial-signal

Source

packages.lisp (file)

Use List
Exported Definitions
Internal Definitions

Previous: , Up: Packages   [Contents][Index]

5.3 trivial-signal.signals

Source

packages.lisp (file)

Use List

common-lisp

Used By List

trivial-signal

Exported Definitions
Internal Definitions

Next: , Previous: , Up: Top   [Contents][Index]

6 Definitions

Definitions are sorted by export status, category, package, and then by lexicographic order.


Next: , Previous: , Up: Definitions   [Contents][Index]

6.1 Exported definitions


Next: , Previous: , Up: Exported definitions   [Contents][Index]

6.1.1 Constants

Constant: +sigabrt+

Abort program (formerly SIGIOT).

Package

trivial-signal.signals

Source

/home/quickbuilder/.cache/common-lisp/sbcl-1.4.0-linux-x64/home/quickbuilder/quicklisp/dists/quicklisp/software/trivial-signal-20151031-git/src/grovel.processed-grovel-file

Constant: +sigalrm+

Real-time timer expired.

Package

trivial-signal.signals

Source

/home/quickbuilder/.cache/common-lisp/sbcl-1.4.0-linux-x64/home/quickbuilder/quicklisp/dists/quicklisp/software/trivial-signal-20151031-git/src/grovel.processed-grovel-file

Constant: +sigbus+

Bus error.

Package

trivial-signal.signals

Source

/home/quickbuilder/.cache/common-lisp/sbcl-1.4.0-linux-x64/home/quickbuilder/quicklisp/dists/quicklisp/software/trivial-signal-20151031-git/src/grovel.processed-grovel-file

Constant: +sigchld+

Child status has changed.

Package

trivial-signal.signals

Source

/home/quickbuilder/.cache/common-lisp/sbcl-1.4.0-linux-x64/home/quickbuilder/quicklisp/dists/quicklisp/software/trivial-signal-20151031-git/src/grovel.processed-grovel-file

Constant: +sigcont+

Continue after stop.

Package

trivial-signal.signals

Source

/home/quickbuilder/.cache/common-lisp/sbcl-1.4.0-linux-x64/home/quickbuilder/quicklisp/dists/quicklisp/software/trivial-signal-20151031-git/src/grovel.processed-grovel-file

Constant: +sigfpe+

Floating-point exception.

Package

trivial-signal.signals

Source

/home/quickbuilder/.cache/common-lisp/sbcl-1.4.0-linux-x64/home/quickbuilder/quicklisp/dists/quicklisp/software/trivial-signal-20151031-git/src/grovel.processed-grovel-file

Constant: +sighup+

Terminal line hangup.

Package

trivial-signal.signals

Source

/home/quickbuilder/.cache/common-lisp/sbcl-1.4.0-linux-x64/home/quickbuilder/quicklisp/dists/quicklisp/software/trivial-signal-20151031-git/src/grovel.processed-grovel-file

Constant: +sigill+

Illegal instruction.

Package

trivial-signal.signals

Source

/home/quickbuilder/.cache/common-lisp/sbcl-1.4.0-linux-x64/home/quickbuilder/quicklisp/dists/quicklisp/software/trivial-signal-20151031-git/src/grovel.processed-grovel-file

Constant: +sigint+

Interrupt program.

Package

trivial-signal.signals

Source

/home/quickbuilder/.cache/common-lisp/sbcl-1.4.0-linux-x64/home/quickbuilder/quicklisp/dists/quicklisp/software/trivial-signal-20151031-git/src/grovel.processed-grovel-file

Constant: +sigio+

I/O is possible on a descriptor (see fcntl(2)).

Package

trivial-signal.signals

Source

/home/quickbuilder/.cache/common-lisp/sbcl-1.4.0-linux-x64/home/quickbuilder/quicklisp/dists/quicklisp/software/trivial-signal-20151031-git/src/grovel.processed-grovel-file

Constant: +sigkill+

Kill program. Cannot be caught, blocked, or ignored.

Package

trivial-signal.signals

Source

/home/quickbuilder/.cache/common-lisp/sbcl-1.4.0-linux-x64/home/quickbuilder/quicklisp/dists/quicklisp/software/trivial-signal-20151031-git/src/grovel.processed-grovel-file

Constant: +sigpipe+

Write on a pipe with no reader.

Package

trivial-signal.signals

Source

/home/quickbuilder/.cache/common-lisp/sbcl-1.4.0-linux-x64/home/quickbuilder/quicklisp/dists/quicklisp/software/trivial-signal-20151031-git/src/grovel.processed-grovel-file

Constant: +sigprof+

Profiling timer alarm (see setitimer(2)).

Package

trivial-signal.signals

Source

/home/quickbuilder/.cache/common-lisp/sbcl-1.4.0-linux-x64/home/quickbuilder/quicklisp/dists/quicklisp/software/trivial-signal-20151031-git/src/grovel.processed-grovel-file

Constant: +sigquit+

Quit program.

Package

trivial-signal.signals

Source

/home/quickbuilder/.cache/common-lisp/sbcl-1.4.0-linux-x64/home/quickbuilder/quicklisp/dists/quicklisp/software/trivial-signal-20151031-git/src/grovel.processed-grovel-file

Constant: +sigsegv+

Segmentation violation.

Package

trivial-signal.signals

Source

/home/quickbuilder/.cache/common-lisp/sbcl-1.4.0-linux-x64/home/quickbuilder/quicklisp/dists/quicklisp/software/trivial-signal-20151031-git/src/grovel.processed-grovel-file

Constant: +sigstop+

Stop. Cannot be caught, blocked, or ignored.

Package

trivial-signal.signals

Source

/home/quickbuilder/.cache/common-lisp/sbcl-1.4.0-linux-x64/home/quickbuilder/quicklisp/dists/quicklisp/software/trivial-signal-20151031-git/src/grovel.processed-grovel-file

Constant: +sigsys+

Non-existent system call invoked.

Package

trivial-signal.signals

Source

/home/quickbuilder/.cache/common-lisp/sbcl-1.4.0-linux-x64/home/quickbuilder/quicklisp/dists/quicklisp/software/trivial-signal-20151031-git/src/grovel.processed-grovel-file

Constant: +sigterm+

Software termination signal.

Package

trivial-signal.signals

Source

/home/quickbuilder/.cache/common-lisp/sbcl-1.4.0-linux-x64/home/quickbuilder/quicklisp/dists/quicklisp/software/trivial-signal-20151031-git/src/grovel.processed-grovel-file

Constant: +sigtrap+

Trace trap.

Package

trivial-signal.signals

Source

/home/quickbuilder/.cache/common-lisp/sbcl-1.4.0-linux-x64/home/quickbuilder/quicklisp/dists/quicklisp/software/trivial-signal-20151031-git/src/grovel.processed-grovel-file

Constant: +sigtstp+

Stop signal generated from keyboard.

Package

trivial-signal.signals

Source

/home/quickbuilder/.cache/common-lisp/sbcl-1.4.0-linux-x64/home/quickbuilder/quicklisp/dists/quicklisp/software/trivial-signal-20151031-git/src/grovel.processed-grovel-file

Constant: +sigttin+

Background read attempted from control terminal.

Package

trivial-signal.signals

Source

/home/quickbuilder/.cache/common-lisp/sbcl-1.4.0-linux-x64/home/quickbuilder/quicklisp/dists/quicklisp/software/trivial-signal-20151031-git/src/grovel.processed-grovel-file

Constant: +sigttou+

Background write attempted to control terminal.

Package

trivial-signal.signals

Source

/home/quickbuilder/.cache/common-lisp/sbcl-1.4.0-linux-x64/home/quickbuilder/quicklisp/dists/quicklisp/software/trivial-signal-20151031-git/src/grovel.processed-grovel-file

Constant: +sigurg+

Urgent condition present on socket.

Package

trivial-signal.signals

Source

/home/quickbuilder/.cache/common-lisp/sbcl-1.4.0-linux-x64/home/quickbuilder/quicklisp/dists/quicklisp/software/trivial-signal-20151031-git/src/grovel.processed-grovel-file

Constant: +sigusr1+

User defined signal 1.

Package

trivial-signal.signals

Source

/home/quickbuilder/.cache/common-lisp/sbcl-1.4.0-linux-x64/home/quickbuilder/quicklisp/dists/quicklisp/software/trivial-signal-20151031-git/src/grovel.processed-grovel-file

Constant: +sigusr2+

User defined signal 2.

Package

trivial-signal.signals

Source

/home/quickbuilder/.cache/common-lisp/sbcl-1.4.0-linux-x64/home/quickbuilder/quicklisp/dists/quicklisp/software/trivial-signal-20151031-git/src/grovel.processed-grovel-file

Constant: +sigvtalrm+

Virtual time alarm (see setitimer(2)).

Package

trivial-signal.signals

Source

/home/quickbuilder/.cache/common-lisp/sbcl-1.4.0-linux-x64/home/quickbuilder/quicklisp/dists/quicklisp/software/trivial-signal-20151031-git/src/grovel.processed-grovel-file

Constant: +sigwinch+

Window size change.

Package

trivial-signal.signals

Source

/home/quickbuilder/.cache/common-lisp/sbcl-1.4.0-linux-x64/home/quickbuilder/quicklisp/dists/quicklisp/software/trivial-signal-20151031-git/src/grovel.processed-grovel-file

Constant: +sigxcpu+

Cpu time limit exceeded (see setrlimit(2)).

Package

trivial-signal.signals

Source

/home/quickbuilder/.cache/common-lisp/sbcl-1.4.0-linux-x64/home/quickbuilder/quicklisp/dists/quicklisp/software/trivial-signal-20151031-git/src/grovel.processed-grovel-file

Constant: +sigxfsz+

File size limit exceeded (see setrlimit(2)).

Package

trivial-signal.signals

Source

/home/quickbuilder/.cache/common-lisp/sbcl-1.4.0-linux-x64/home/quickbuilder/quicklisp/dists/quicklisp/software/trivial-signal-20151031-git/src/grovel.processed-grovel-file


Next: , Previous: , Up: Exported definitions   [Contents][Index]

6.1.2 Macros

Macro: signal-handler-bind BINDINGS &body FORMS

Execute FORMS in a dynamic environment where thread-local signal handler bindings are in effect.

The syntax is almost identical to cl:handler-bind. Example:

(tagbody
(signal-handler-bind ((15 (lambda (c) (print :first)))
(15 (lambda (c) (print :escaping) (go :escape)))
(2 (lambda (c) (print :escaping) (go :escape)))
(15 (lambda (c) (print :this-should-not-be-printed)))) (loop (sleep 3)))
:escape
(print :success!))

Now send signal 15 to the main lisp process using the terminal. It should
print :FIRST, :ESCAPING and :SUCCESS.

(Note: it does not work on some implementations, due to their
internals. In such cases, try another signal number, e.g. 10 !)

Package

trivial-signal

Source

trivial-signal.lisp (file)

Macro: with-signal-handler SIGNAL FN &body FORMS

This is only for the backward compatibility

Package

trivial-signal

Source

trivial-signal.lisp (file)


Next: , Previous: , Up: Exported definitions   [Contents][Index]

6.1.3 Functions

Function: call-signal-handler-bind NEW-SIGNAL-HANDLERS FN

Execute FN in a dynamic environment where signal handler bindings are
in effect. new-signal-handlers is a cons tree of ((signo handler ...) ...)

note that, trivial-signal only considers the first appearance of (signo handlers...) with matching signo in the same layer. For example,

(call-signal-handler-bind
‘((,*signo* ,(lambda (c) (lprint :first))
,(lambda (c) (lprint :escaping) (go :escape))
,(lambda (c) (lprint :this-should-not-be-called))))
(lambda () ...))

is okay but

(call-signal-handler-bind
‘((,*signo* ,(lambda (c) (lprint :first)))
(,*signo* ,(lambda (c) (lprint :escaping) (go :escape)))
(,*signo* ,(lambda (c) (lprint :this-should-not-be-called))))
(lambda () ... ))

is incorrect (2nd and 3rd handlers are ignored).
If you want to do it wrap the main code in (lambda () ...)
with another call-signal-handler-bind.

Package

trivial-signal

Source

trivial-signal.lisp (file)

Function: remove-all-signal-handlers ()

Removes all toplevel signal handlers

Package

trivial-signal

Source

trivial-signal.lisp (file)

Function: remove-signal-handler SIGNAL

Deprecated.
To remove the toplevel signal handler, (setf (signal-handler signo) nil) .

Package

trivial-signal

Source

trivial-signal.lisp (file)

Function: signal-handler SIGNAL

Returns the toplevel signal handler for a signal SIGNAL.
Toplevel handlers are system wide and (in most cases) static.
Unlike normal signal handlers, toplevel handlers can hold at most one
handler for the same signal.

Example:

(use-package :trivial-signal)
(defun exit-on-signal (signo)
(format *error-output* "~&received ~A~%" (signal-name signo))
(sb-ext:exit :code 1 :abort t))
(setf (signal-handler :term) #’exit-on-signal) ;; :term can also be :sigterm or 15

(loop (sleep 3))

Package

trivial-signal

Source

trivial-signal.lisp (file)

Writer

(setf signal-handler) (function)

Function: (setf signal-handler) FN SIGNAL

Set the toplevel signal handler FN for a signal SIGNAL. Toplevel handlers can hold at most one handler for the same signal.

Package

trivial-signal

Source

trivial-signal.lisp (file)

Reader

signal-handler (function)

Function: signal-name SIGNO

Return the name of SIGNO as a keyword.

Package

trivial-signal.signals

Source

signals.lisp (file)

Function: signal-number SIGSPEC

Return the integer of SIGSPEC, which follows the sigspec API e.g. +SIGHUP+, :hup or :sighup.

Package

trivial-signal.signals

Source

signals.lisp (file)


Next: , Previous: , Up: Exported definitions   [Contents][Index]

6.1.4 Generic functions

Generic Function: signo CONDITION
Package

trivial-signal

Methods
Method: signo (CONDITION unix-signal)
Source

trivial-signal.lisp (file)


Previous: , Up: Exported definitions   [Contents][Index]

6.1.5 Conditions

Condition: unix-signal ()
Package

trivial-signal

Source

trivial-signal.lisp (file)

Direct superclasses

condition (condition)

Direct methods

signo (method)

Direct slots
Slot: signo
Initargs

:signo

Readers

signo (generic function)


Previous: , Up: Definitions   [Contents][Index]

6.2 Internal definitions


Next: , Previous: , Up: Internal definitions   [Contents][Index]

6.2.1 Constants

Constant: +sigcld+

A synonym for SIGCHLD.

Package

trivial-signal.signals

Source

/home/quickbuilder/.cache/common-lisp/sbcl-1.4.0-linux-x64/home/quickbuilder/quicklisp/dists/quicklisp/software/trivial-signal-20151031-git/src/grovel.processed-grovel-file

Constant: +sigiot+

IOT trap. A synonym for SIGABRT.

Package

trivial-signal.signals

Source

/home/quickbuilder/.cache/common-lisp/sbcl-1.4.0-linux-x64/home/quickbuilder/quicklisp/dists/quicklisp/software/trivial-signal-20151031-git/src/grovel.processed-grovel-file

Constant: +sigpoll+

Pollable event (Sys V). Synonym of SIGIO.

Package

trivial-signal.signals

Source

/home/quickbuilder/.cache/common-lisp/sbcl-1.4.0-linux-x64/home/quickbuilder/quicklisp/dists/quicklisp/software/trivial-signal-20151031-git/src/grovel.processed-grovel-file

Constant: +sigpwr+

Power failure (System V)

Package

trivial-signal.signals

Source

/home/quickbuilder/.cache/common-lisp/sbcl-1.4.0-linux-x64/home/quickbuilder/quicklisp/dists/quicklisp/software/trivial-signal-20151031-git/src/grovel.processed-grovel-file

Constant: +sigrtmax+

SIGRTMAX in POSIX.1-2001, real time signal

Package

trivial-signal.signals

Source

/home/quickbuilder/.cache/common-lisp/sbcl-1.4.0-linux-x64/home/quickbuilder/quicklisp/dists/quicklisp/software/trivial-signal-20151031-git/src/grovel.processed-grovel-file

Constant: +sigrtmax-1+

SIGRTMAX-1 in POSIX.1-2001, real time signal

Package

trivial-signal.signals

Source

/home/quickbuilder/.cache/common-lisp/sbcl-1.4.0-linux-x64/home/quickbuilder/quicklisp/dists/quicklisp/software/trivial-signal-20151031-git/src/grovel.processed-grovel-file

Constant: +sigrtmax-10+

SIGRTMAX-10 in POSIX.1-2001, real time signal

Package

trivial-signal.signals

Source

/home/quickbuilder/.cache/common-lisp/sbcl-1.4.0-linux-x64/home/quickbuilder/quicklisp/dists/quicklisp/software/trivial-signal-20151031-git/src/grovel.processed-grovel-file

Constant: +sigrtmax-11+

SIGRTMAX-11 in POSIX.1-2001, real time signal

Package

trivial-signal.signals

Source

/home/quickbuilder/.cache/common-lisp/sbcl-1.4.0-linux-x64/home/quickbuilder/quicklisp/dists/quicklisp/software/trivial-signal-20151031-git/src/grovel.processed-grovel-file

Constant: +sigrtmax-12+

SIGRTMAX-12 in POSIX.1-2001, real time signal

Package

trivial-signal.signals

Source

/home/quickbuilder/.cache/common-lisp/sbcl-1.4.0-linux-x64/home/quickbuilder/quicklisp/dists/quicklisp/software/trivial-signal-20151031-git/src/grovel.processed-grovel-file

Constant: +sigrtmax-13+

SIGRTMAX-13 in POSIX.1-2001, real time signal

Package

trivial-signal.signals

Source

/home/quickbuilder/.cache/common-lisp/sbcl-1.4.0-linux-x64/home/quickbuilder/quicklisp/dists/quicklisp/software/trivial-signal-20151031-git/src/grovel.processed-grovel-file

Constant: +sigrtmax-14+

SIGRTMAX-14 in POSIX.1-2001, real time signal

Package

trivial-signal.signals

Source

/home/quickbuilder/.cache/common-lisp/sbcl-1.4.0-linux-x64/home/quickbuilder/quicklisp/dists/quicklisp/software/trivial-signal-20151031-git/src/grovel.processed-grovel-file

Constant: +sigrtmax-2+

SIGRTMAX-2 in POSIX.1-2001, real time signal

Package

trivial-signal.signals

Source

/home/quickbuilder/.cache/common-lisp/sbcl-1.4.0-linux-x64/home/quickbuilder/quicklisp/dists/quicklisp/software/trivial-signal-20151031-git/src/grovel.processed-grovel-file

Constant: +sigrtmax-3+

SIGRTMAX-3 in POSIX.1-2001, real time signal

Package

trivial-signal.signals

Source

/home/quickbuilder/.cache/common-lisp/sbcl-1.4.0-linux-x64/home/quickbuilder/quicklisp/dists/quicklisp/software/trivial-signal-20151031-git/src/grovel.processed-grovel-file

Constant: +sigrtmax-4+

SIGRTMAX-4 in POSIX.1-2001, real time signal

Package

trivial-signal.signals

Source

/home/quickbuilder/.cache/common-lisp/sbcl-1.4.0-linux-x64/home/quickbuilder/quicklisp/dists/quicklisp/software/trivial-signal-20151031-git/src/grovel.processed-grovel-file

Constant: +sigrtmax-5+

SIGRTMAX-5 in POSIX.1-2001, real time signal

Package

trivial-signal.signals

Source

/home/quickbuilder/.cache/common-lisp/sbcl-1.4.0-linux-x64/home/quickbuilder/quicklisp/dists/quicklisp/software/trivial-signal-20151031-git/src/grovel.processed-grovel-file

Constant: +sigrtmax-6+

SIGRTMAX-6 in POSIX.1-2001, real time signal

Package

trivial-signal.signals

Source

/home/quickbuilder/.cache/common-lisp/sbcl-1.4.0-linux-x64/home/quickbuilder/quicklisp/dists/quicklisp/software/trivial-signal-20151031-git/src/grovel.processed-grovel-file

Constant: +sigrtmax-7+

SIGRTMAX-7 in POSIX.1-2001, real time signal

Package

trivial-signal.signals

Source

/home/quickbuilder/.cache/common-lisp/sbcl-1.4.0-linux-x64/home/quickbuilder/quicklisp/dists/quicklisp/software/trivial-signal-20151031-git/src/grovel.processed-grovel-file

Constant: +sigrtmax-8+

SIGRTMAX-8 in POSIX.1-2001, real time signal

Package

trivial-signal.signals

Source

/home/quickbuilder/.cache/common-lisp/sbcl-1.4.0-linux-x64/home/quickbuilder/quicklisp/dists/quicklisp/software/trivial-signal-20151031-git/src/grovel.processed-grovel-file

Constant: +sigrtmax-9+

SIGRTMAX-9 in POSIX.1-2001, real time signal

Package

trivial-signal.signals

Source

/home/quickbuilder/.cache/common-lisp/sbcl-1.4.0-linux-x64/home/quickbuilder/quicklisp/dists/quicklisp/software/trivial-signal-20151031-git/src/grovel.processed-grovel-file

Constant: +sigrtmin+

SIGRTMIN in POSIX.1-2001, real time signal

Package

trivial-signal.signals

Source

/home/quickbuilder/.cache/common-lisp/sbcl-1.4.0-linux-x64/home/quickbuilder/quicklisp/dists/quicklisp/software/trivial-signal-20151031-git/src/grovel.processed-grovel-file

Constant: +sigrtmin+1+

SIGRTMIN+1 in POSIX.1-2001, real time signal

Package

trivial-signal.signals

Source

/home/quickbuilder/.cache/common-lisp/sbcl-1.4.0-linux-x64/home/quickbuilder/quicklisp/dists/quicklisp/software/trivial-signal-20151031-git/src/grovel.processed-grovel-file

Constant: +sigrtmin+10+

SIGRTMIN+10 in POSIX.1-2001, real time signal

Package

trivial-signal.signals

Source

/home/quickbuilder/.cache/common-lisp/sbcl-1.4.0-linux-x64/home/quickbuilder/quicklisp/dists/quicklisp/software/trivial-signal-20151031-git/src/grovel.processed-grovel-file

Constant: +sigrtmin+11+

SIGRTMIN+11 in POSIX.1-2001, real time signal

Package

trivial-signal.signals

Source

/home/quickbuilder/.cache/common-lisp/sbcl-1.4.0-linux-x64/home/quickbuilder/quicklisp/dists/quicklisp/software/trivial-signal-20151031-git/src/grovel.processed-grovel-file

Constant: +sigrtmin+12+

SIGRTMIN+12 in POSIX.1-2001, real time signal

Package

trivial-signal.signals

Source

/home/quickbuilder/.cache/common-lisp/sbcl-1.4.0-linux-x64/home/quickbuilder/quicklisp/dists/quicklisp/software/trivial-signal-20151031-git/src/grovel.processed-grovel-file

Constant: +sigrtmin+13+

SIGRTMIN+13 in POSIX.1-2001, real time signal

Package

trivial-signal.signals

Source

/home/quickbuilder/.cache/common-lisp/sbcl-1.4.0-linux-x64/home/quickbuilder/quicklisp/dists/quicklisp/software/trivial-signal-20151031-git/src/grovel.processed-grovel-file

Constant: +sigrtmin+14+

SIGRTMIN+14 in POSIX.1-2001, real time signal

Package

trivial-signal.signals

Source

/home/quickbuilder/.cache/common-lisp/sbcl-1.4.0-linux-x64/home/quickbuilder/quicklisp/dists/quicklisp/software/trivial-signal-20151031-git/src/grovel.processed-grovel-file

Constant: +sigrtmin+15+

SIGRTMIN+15 in POSIX.1-2001, real time signal

Package

trivial-signal.signals

Source

/home/quickbuilder/.cache/common-lisp/sbcl-1.4.0-linux-x64/home/quickbuilder/quicklisp/dists/quicklisp/software/trivial-signal-20151031-git/src/grovel.processed-grovel-file

Constant: +sigrtmin+2+

SIGRTMIN+2 in POSIX.1-2001, real time signal

Package

trivial-signal.signals

Source

/home/quickbuilder/.cache/common-lisp/sbcl-1.4.0-linux-x64/home/quickbuilder/quicklisp/dists/quicklisp/software/trivial-signal-20151031-git/src/grovel.processed-grovel-file

Constant: +sigrtmin+3+

SIGRTMIN+3 in POSIX.1-2001, real time signal

Package

trivial-signal.signals

Source

/home/quickbuilder/.cache/common-lisp/sbcl-1.4.0-linux-x64/home/quickbuilder/quicklisp/dists/quicklisp/software/trivial-signal-20151031-git/src/grovel.processed-grovel-file

Constant: +sigrtmin+4+

SIGRTMIN+4 in POSIX.1-2001, real time signal

Package

trivial-signal.signals

Source

/home/quickbuilder/.cache/common-lisp/sbcl-1.4.0-linux-x64/home/quickbuilder/quicklisp/dists/quicklisp/software/trivial-signal-20151031-git/src/grovel.processed-grovel-file

Constant: +sigrtmin+5+

SIGRTMIN+5 in POSIX.1-2001, real time signal

Package

trivial-signal.signals

Source

/home/quickbuilder/.cache/common-lisp/sbcl-1.4.0-linux-x64/home/quickbuilder/quicklisp/dists/quicklisp/software/trivial-signal-20151031-git/src/grovel.processed-grovel-file

Constant: +sigrtmin+6+

SIGRTMIN+6 in POSIX.1-2001, real time signal

Package

trivial-signal.signals

Source

/home/quickbuilder/.cache/common-lisp/sbcl-1.4.0-linux-x64/home/quickbuilder/quicklisp/dists/quicklisp/software/trivial-signal-20151031-git/src/grovel.processed-grovel-file

Constant: +sigrtmin+7+

SIGRTMIN+7 in POSIX.1-2001, real time signal

Package

trivial-signal.signals

Source

/home/quickbuilder/.cache/common-lisp/sbcl-1.4.0-linux-x64/home/quickbuilder/quicklisp/dists/quicklisp/software/trivial-signal-20151031-git/src/grovel.processed-grovel-file

Constant: +sigrtmin+8+

SIGRTMIN+8 in POSIX.1-2001, real time signal

Package

trivial-signal.signals

Source

/home/quickbuilder/.cache/common-lisp/sbcl-1.4.0-linux-x64/home/quickbuilder/quicklisp/dists/quicklisp/software/trivial-signal-20151031-git/src/grovel.processed-grovel-file

Constant: +sigrtmin+9+

SIGRTMIN+9 in POSIX.1-2001, real time signal

Package

trivial-signal.signals

Source

/home/quickbuilder/.cache/common-lisp/sbcl-1.4.0-linux-x64/home/quickbuilder/quicklisp/dists/quicklisp/software/trivial-signal-20151031-git/src/grovel.processed-grovel-file

Constant: +sigunused+

Unused signal (will be SIGSYS)

Package

trivial-signal.signals

Source

/home/quickbuilder/.cache/common-lisp/sbcl-1.4.0-linux-x64/home/quickbuilder/quicklisp/dists/quicklisp/software/trivial-signal-20151031-git/src/grovel.processed-grovel-file


Next: , Previous: , Up: Internal definitions   [Contents][Index]

6.2.2 Special variables

Special Variable: *currently-enabled-signals*
Package

trivial-signal

Source

trivial-signal.lisp (file)

Special Variable: *listener-threads*
Package

trivial-signal

Source

trivial-signal.lisp (file)

Special Variable: *listener-threads-lock*
Package

trivial-signal

Source

trivial-signal.lisp (file)

Special Variable: *listening-signal-p*

per-thread flag for whether the current thread is listening signals

Package

trivial-signal

Source

trivial-signal.lisp (file)

Special Variable: *signal-handler-hierarchy*

Nested cons-tree of signal handlers

Package

trivial-signal

Source

trivial-signal.lisp (file)

Special Variable: *signal-keyword*
Package

trivial-signal.signals

Source

signals.lisp (file)

Special Variable: *toplevel-signal-handlers*

Toplevel handler

Package

trivial-signal

Source

trivial-signal.lisp (file)


Previous: , Up: Internal definitions   [Contents][Index]

6.2.3 Functions

Function: %disable-all-signal-handlers SIGNALS
Package

trivial-signal

Source

trivial-signal.lisp (file)

Function: %disable-signal-handler SIGNO
Package

trivial-signal

Source

trivial-signal.lisp (file)

Function: %enable-all-signal-handlers SIGNALS
Package

trivial-signal

Source

trivial-signal.lisp (file)

Function: %enable-signal-handler SIGNO
Package

trivial-signal

Source

trivial-signal.lisp (file)

Function: %inline-bindings BINDINGS
Package

trivial-signal

Source

trivial-signal.lisp (file)

Function: %next-enabled-signals NEW-SIGNAL-HANDLERS
Package

trivial-signal

Source

trivial-signal.lisp (file)

Function: assocdr ITEM ALIST
Package

trivial-signal

Source

trivial-signal.lisp (file)

Function: canonical-signal-arg SIGNAL
Package

trivial-signal

Source

trivial-signal.lisp (file)

Function: constant->keyword SYMBOL

+SIGHUP+ -> :HUP

Package

trivial-signal.signals

Source

signals.lisp (file)

Function: constant->sigkeyword SYMBOL

+SIGHUP+ -> :SIGHUP

Package

trivial-signal.signals

Source

signals.lisp (file)

Function: group-bindings BINDINGS

returns an alist of ((name handler1 handler2 ...)=cons ...)

Package

trivial-signal

Source

trivial-signal.lisp (file)

Function: invoke-handlers SIGNO

Handler-invoking procedure per thread

Package

trivial-signal

Source

trivial-signal.lisp (file)

Function: keyword->constant SYMBOL

:HUP -> +SIGHUP+

Package

trivial-signal.signals

Source

signals.lisp (file)


Previous: , Up: Top   [Contents][Index]

Appendix A Indexes


Next: , Previous: , Up: Indexes   [Contents][Index]

A.1 Concepts

Jump to:   F   L   M   T  
Index Entry  Section

F
File, Lisp, trivial-signal.asd: The trivial-signal<dot>asd file
File, Lisp, trivial-signal/src/grovel.lisp: The trivial-signal/src/grovel<dot>lisp file
File, Lisp, trivial-signal/src/packages.lisp: The trivial-signal/src/packages<dot>lisp file
File, Lisp, trivial-signal/src/signals.lisp: The trivial-signal/src/signals<dot>lisp file
File, Lisp, trivial-signal/src/trivial-signal.lisp: The trivial-signal/src/trivial-signal<dot>lisp file

L
Lisp File, trivial-signal.asd: The trivial-signal<dot>asd file
Lisp File, trivial-signal/src/grovel.lisp: The trivial-signal/src/grovel<dot>lisp file
Lisp File, trivial-signal/src/packages.lisp: The trivial-signal/src/packages<dot>lisp file
Lisp File, trivial-signal/src/signals.lisp: The trivial-signal/src/signals<dot>lisp file
Lisp File, trivial-signal/src/trivial-signal.lisp: The trivial-signal/src/trivial-signal<dot>lisp file

M
Module, trivial-signal/src: The trivial-signal/src module

T
trivial-signal.asd: The trivial-signal<dot>asd file
trivial-signal/src: The trivial-signal/src module
trivial-signal/src/grovel.lisp: The trivial-signal/src/grovel<dot>lisp file
trivial-signal/src/packages.lisp: The trivial-signal/src/packages<dot>lisp file
trivial-signal/src/signals.lisp: The trivial-signal/src/signals<dot>lisp file
trivial-signal/src/trivial-signal.lisp: The trivial-signal/src/trivial-signal<dot>lisp file

Jump to:   F   L   M   T  

Next: , Previous: , Up: Indexes   [Contents][Index]

A.2 Functions

Jump to:   %   (  
A   C   F   G   I   K   M   R   S   W  
Index Entry  Section

%
%disable-all-signal-handlers: Internal functions
%disable-signal-handler: Internal functions
%enable-all-signal-handlers: Internal functions
%enable-signal-handler: Internal functions
%inline-bindings: Internal functions
%next-enabled-signals: Internal functions

(
(setf signal-handler): Exported functions

A
assocdr: Internal functions

C
call-signal-handler-bind: Exported functions
canonical-signal-arg: Internal functions
constant->keyword: Internal functions
constant->sigkeyword: Internal functions

F
Function, %disable-all-signal-handlers: Internal functions
Function, %disable-signal-handler: Internal functions
Function, %enable-all-signal-handlers: Internal functions
Function, %enable-signal-handler: Internal functions
Function, %inline-bindings: Internal functions
Function, %next-enabled-signals: Internal functions
Function, (setf signal-handler): Exported functions
Function, assocdr: Internal functions
Function, call-signal-handler-bind: Exported functions
Function, canonical-signal-arg: Internal functions
Function, constant->keyword: Internal functions
Function, constant->sigkeyword: Internal functions
Function, group-bindings: Internal functions
Function, invoke-handlers: Internal functions
Function, keyword->constant: Internal functions
Function, remove-all-signal-handlers: Exported functions
Function, remove-signal-handler: Exported functions
Function, signal-handler: Exported functions
Function, signal-name: Exported functions
Function, signal-number: Exported functions

G
Generic Function, signo: Exported generic functions
group-bindings: Internal functions

I
invoke-handlers: Internal functions

K
keyword->constant: Internal functions

M
Macro, signal-handler-bind: Exported macros
Macro, with-signal-handler: Exported macros
Method, signo: Exported generic functions

R
remove-all-signal-handlers: Exported functions
remove-signal-handler: Exported functions

S
signal-handler: Exported functions
signal-handler-bind: Exported macros
signal-name: Exported functions
signal-number: Exported functions
signo: Exported generic functions
signo: Exported generic functions

W
with-signal-handler: Exported macros

Jump to:   %   (  
A   C   F   G   I   K   M   R   S   W  

Next: , Previous: , Up: Indexes   [Contents][Index]

A.3 Variables

Jump to:   *   +  
C   S  
Index Entry  Section

*
*currently-enabled-signals*: Internal special variables
*listener-threads*: Internal special variables
*listener-threads-lock*: Internal special variables
*listening-signal-p*: Internal special variables
*signal-handler-hierarchy*: Internal special variables
*signal-keyword*: Internal special variables
*toplevel-signal-handlers*: Internal special variables

+
+sigabrt+: Exported constants
+sigalrm+: Exported constants
+sigbus+: Exported constants
+sigchld+: Exported constants
+sigcld+: Internal constants
+sigcont+: Exported constants
+sigfpe+: Exported constants
+sighup+: Exported constants
+sigill+: Exported constants
+sigint+: Exported constants
+sigio+: Exported constants
+sigiot+: Internal constants
+sigkill+: Exported constants
+sigpipe+: Exported constants
+sigpoll+: Internal constants
+sigprof+: Exported constants
+sigpwr+: Internal constants
+sigquit+: Exported constants
+sigrtmax+: Internal constants
+sigrtmax-1+: Internal constants
+sigrtmax-10+: Internal constants
+sigrtmax-11+: Internal constants
+sigrtmax-12+: Internal constants
+sigrtmax-13+: Internal constants
+sigrtmax-14+: Internal constants
+sigrtmax-2+: Internal constants
+sigrtmax-3+: Internal constants
+sigrtmax-4+: Internal constants
+sigrtmax-5+: Internal constants
+sigrtmax-6+: Internal constants
+sigrtmax-7+: Internal constants
+sigrtmax-8+: Internal constants
+sigrtmax-9+: Internal constants
+sigrtmin+: Internal constants
+sigrtmin+1+: Internal constants
+sigrtmin+10+: Internal constants
+sigrtmin+11+: Internal constants
+sigrtmin+12+: Internal constants
+sigrtmin+13+: Internal constants
+sigrtmin+14+: Internal constants
+sigrtmin+15+: Internal constants
+sigrtmin+2+: Internal constants
+sigrtmin+3+: Internal constants
+sigrtmin+4+: Internal constants
+sigrtmin+5+: Internal constants
+sigrtmin+6+: Internal constants
+sigrtmin+7+: Internal constants
+sigrtmin+8+: Internal constants
+sigrtmin+9+: Internal constants
+sigsegv+: Exported constants
+sigstop+: Exported constants
+sigsys+: Exported constants
+sigterm+: Exported constants
+sigtrap+: Exported constants
+sigtstp+: Exported constants
+sigttin+: Exported constants
+sigttou+: Exported constants
+sigunused+: Internal constants
+sigurg+: Exported constants
+sigusr1+: Exported constants
+sigusr2+: Exported constants
+sigvtalrm+: Exported constants
+sigwinch+: Exported constants
+sigxcpu+: Exported constants
+sigxfsz+: Exported constants

C
Constant, +sigabrt+: Exported constants
Constant, +sigalrm+: Exported constants
Constant, +sigbus+: Exported constants
Constant, +sigchld+: Exported constants
Constant, +sigcld+: Internal constants
Constant, +sigcont+: Exported constants
Constant, +sigfpe+: Exported constants
Constant, +sighup+: Exported constants
Constant, +sigill+: Exported constants
Constant, +sigint+: Exported constants
Constant, +sigio+: Exported constants
Constant, +sigiot+: Internal constants
Constant, +sigkill+: Exported constants
Constant, +sigpipe+: Exported constants
Constant, +sigpoll+: Internal constants
Constant, +sigprof+: Exported constants
Constant, +sigpwr+: Internal constants
Constant, +sigquit+: Exported constants
Constant, +sigrtmax+: Internal constants
Constant, +sigrtmax-1+: Internal constants
Constant, +sigrtmax-10+: Internal constants
Constant, +sigrtmax-11+: Internal constants
Constant, +sigrtmax-12+: Internal constants
Constant, +sigrtmax-13+: Internal constants
Constant, +sigrtmax-14+: Internal constants
Constant, +sigrtmax-2+: Internal constants
Constant, +sigrtmax-3+: Internal constants
Constant, +sigrtmax-4+: Internal constants
Constant, +sigrtmax-5+: Internal constants
Constant, +sigrtmax-6+: Internal constants
Constant, +sigrtmax-7+: Internal constants
Constant, +sigrtmax-8+: Internal constants
Constant, +sigrtmax-9+: Internal constants
Constant, +sigrtmin+: Internal constants
Constant, +sigrtmin+1+: Internal constants
Constant, +sigrtmin+10+: Internal constants
Constant, +sigrtmin+11+: Internal constants
Constant, +sigrtmin+12+: Internal constants
Constant, +sigrtmin+13+: Internal constants
Constant, +sigrtmin+14+: Internal constants
Constant, +sigrtmin+15+: Internal constants
Constant, +sigrtmin+2+: Internal constants
Constant, +sigrtmin+3+: Internal constants
Constant, +sigrtmin+4+: Internal constants
Constant, +sigrtmin+5+: Internal constants
Constant, +sigrtmin+6+: Internal constants
Constant, +sigrtmin+7+: Internal constants
Constant, +sigrtmin+8+: Internal constants
Constant, +sigrtmin+9+: Internal constants
Constant, +sigsegv+: Exported constants
Constant, +sigstop+: Exported constants
Constant, +sigsys+: Exported constants
Constant, +sigterm+: Exported constants
Constant, +sigtrap+: Exported constants
Constant, +sigtstp+: Exported constants
Constant, +sigttin+: Exported constants
Constant, +sigttou+: Exported constants
Constant, +sigunused+: Internal constants
Constant, +sigurg+: Exported constants
Constant, +sigusr1+: Exported constants
Constant, +sigusr2+: Exported constants
Constant, +sigvtalrm+: Exported constants
Constant, +sigwinch+: Exported constants
Constant, +sigxcpu+: Exported constants
Constant, +sigxfsz+: Exported constants

S
signo: Exported conditions
Slot, signo: Exported conditions
Special Variable, *currently-enabled-signals*: Internal special variables
Special Variable, *listener-threads*: Internal special variables
Special Variable, *listener-threads-lock*: Internal special variables
Special Variable, *listening-signal-p*: Internal special variables
Special Variable, *signal-handler-hierarchy*: Internal special variables
Special Variable, *signal-keyword*: Internal special variables
Special Variable, *toplevel-signal-handlers*: Internal special variables

Jump to:   *   +  
C   S  

Previous: , Up: Indexes   [Contents][Index]

A.4 Data types

Jump to:   C   P   S   T   U  
Index Entry  Section

C
Condition, unix-signal: Exported conditions

P
Package, trivial-signal: The trivial-signal package
Package, trivial-signal-asd: The trivial-signal-asd package
Package, trivial-signal.signals: The trivial-signal<dot>signals package

S
System, trivial-signal: The trivial-signal system

T
trivial-signal: The trivial-signal system
trivial-signal: The trivial-signal package
trivial-signal-asd: The trivial-signal-asd package
trivial-signal.signals: The trivial-signal<dot>signals package

U
unix-signal: Exported conditions

Jump to:   C   P   S   T   U