Skip to content

Instantly share code, notes, and snippets.

@xpe
Last active May 19, 2026 17:05
Show Gist options
  • Select an option

  • Save xpe/37e90ea1d60359a436c9e2b91c38d644 to your computer and use it in GitHub Desktop.

Select an option

Save xpe/37e90ea1d60359a436c9e2b91c38d644 to your computer and use it in GitHub Desktop.
POSIX Signals

POSIX Signals

Signal # A C G Key Act Norm
SIGCHLD 17 · C G · I child died or stopped
SIGHUP 1 · C G · T TTY hangup; or reload config (convention)
SIGINT 2 A C · ^C T cancel current op
SIGKILL 9 · · · · T last resort; no cleanup
SIGPIPE 13 · C G · T write to pipe with no reader
SIGQUIT 3 · C · ^\ D debug halt (post-mortem)
SIGSEGV 11 A C G · D invalid memory access
SIGSTOP 19 · · · · S forced pause (job control)
SIGTERM 15 A C · · T polite shutdown request

Legend:

  • # = Linux signal number
  • A = ANSI C
  • C = Catchable — disposition settable via sigaction(2) (catch / block / ignore)
  • G = kernel-Generated by a system event (specific trigger in Norm cell)
  • Key = TTY keystroke that generates it
  • Act = default Action:
    • T : Terminate
    • D : terminate + Dump core
    • S : Stop
    • I : Ignore

SIGHUP's two meanings:

  • TTY hangup : kernel-sent. Session leader (and its foreground process group) receives SIGHUP when the controlling terminal disconnects.
  • reload config : userspace convention only. Admin or init system runs kill -HUP <pid> to tell a long-running daemon to re-read its configuration. Kernel doesn't enforce this meaning; it's a contract daemons opt into.

Universals (omitted as columns):

  • All are POSIX-mandated and exist on Linux and BSD.
  • All can be sent with kill(2)

Signal numbers shown are Linux-conventional; POSIX standardizes the names, not the integer values.


Generated with assistance from Claude Opus 4.7; this required *lots of iteration: 10+ cycles.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment