Signal Handling
Signals are messsages sent to
running programs to trigger specific behavior. For example, SIGINT is sent to
all processes in the terminal forground process group when CTRL-C is pressed.
just tries to exit when requested by a signal, but it also tries to avoid
leaving behind running child proccesses, two goals which are somewhat in
conflict.
If just exits leaving behind child processes, the user will have no recourse
but to ps aux | grep for the children and manually kill them, a tedious
endevour.
Fatal Signals
SIGHUP, SIGINT, and SIGQUIT are generated when the user closes the
terminal, types ctrl-c, or types ctrl-\, respectively, and are sent to all
processes in the foreground process group.
SIGTERM is the default signal sent by the kill command, and is delivered
only to its intended victim.
When a child process is not running, just will exit immediately on receipt of
any of the above signals.
When a child process is running, just will wait until it terminates, to
avoid leaving it behind.
Additionally, on receipt of SIGTERM, just will forward SIGTERM to any
running children1.41.0, since unlike other fatal signals, SIGTERM,
was likely sent to just alone.
Regardless of whether a child process terminates successfully after just
receives a fatal signal, just halts execution.
SIGINFO
SIGINFO is sent to all processes in the foreground process group when the
user types ctrl-t on
BSD-derived
operating systems, including MacOS, but not Linux.
just responds by printing a list of all child process IDs and
commands1.41.0.
Windows
On Windows, just behaves as if it had received SIGINT when the user types
ctrl-c. Other signals are unsupported.