UNIX and Linux signal handling

UNIX and Linux signal handling

In this tutorial we will discuss about the UNIX and Linux signal handling.

The Linux / Unix signals are used for transmitting a special condition to a process. Here, I will explain the basic things every Unix user should know about the signals.

The signals can be sent by both, the user and the kernel.

The signals that are usually transmitted by the kernel are:

  • SIGSERV (signal segment violation) : sent when an invalid memory zone is accessed.
  • SIGBUS : sent when an error occurs on the system’s bus.
  • SIGFPE (signal floating point error) : sent when a floating error occurs
  • SIGTERM (signal termination) : sent for quitting a process
  • SIGKILL (signal kill) : sent for quitting a process forced.

The signals that are usually transmitted by the user are:

  • SIGINT (signal interrupt) : intrerupts the current process
  • SIGQUIT (signal quit) : signals the stopping of the current process
  • SIGSTOP (signal stop) : suspends the current process
  • SIGCONT (signal continue) : restarts the suspended process

The information about the signals sent by the kernel is for general knowledge only. In this article I will insint on the signals sent by the users.

There are more than 60 signals offered by the operating system. A complete list of signals can be displayed with the command: kill -l

$ kill -l
1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL       5) SIGTRAP
6) SIGABRT      7) SIGBUS       8) SIGFPE       9) SIGKILL     10) SIGUSR1
11) SIGSEGV     12) SIGUSR2     13) SIGPIPE     14) SIGALRM     15) SIGTERM
16) SIGSTKFLT   17) SIGCHLD     18) SIGCONT     19) SIGSTOP     20) SIGTSTP
21) SIGTTIN     22) SIGTTOU     23) SIGURG      24) SIGXCPU     25) SIGXFSZ
26) SIGVTALRM   27) SIGPROF     28) SIGWINCH    29) SIGIO       30) SIGPWR
31) SIGSYS      34) SIGRTMIN    35) SIGRTMIN+1  36) SIGRTMIN+2  37) SIGRTMIN+3
38) SIGRTMIN+4  39) SIGRTMIN+5  40) SIGRTMIN+6  41) SIGRTMIN+7  42) SIGRTMIN+8
43) SIGRTMIN+9  44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9  56) SIGRTMAX-8  57) SIGRTMAX-7
58) SIGRTMAX-6  59) SIGRTMAX-5  60) SIGRTMAX-4  61) SIGRTMAX-3  62) SIGRTMAX-2
63) SIGRTMAX-1  64) SIGRTMAX

A signal has an identification number and a name, offering an ideea about its effect on the processes. I will pick only the most important signals, and give explenations, where necesarry:

  • SIGHUP (1) (signal hang up) : this is used for restarting a process ; example: restart a daemon and ask him to reread the configuration file.
  • SIGINT (2) (signal interrupt) : this is used for interrupting a proces ; usually, an interrupt process stops immediately.
  • SIGQUIT (3) (signal quit) : this is used for stopping a process ; SIGQUIT can stop the processes that could not be killed with SIGINT.
  • SIGILL (4) (signal illegal) : the process is executing an illegal instruction.
  • SIGKILL (9) (signal kill) : this is the most powerfull signal ; it kills the process no matter what.
  • SIGTERM (15) (signal termination) : this terminates a process ; the kernel sends SIGTERM to a process to ask him to cleanup because it will be stopped ith SIGKILL.
  • SIGSTOP (19) (signal stop) : this suspends the current process.
  • SIGCONT (18) (signal continue) : restart a suspended process.

How to send signals to processes:

The tools kill, killall and pkill are used for sending signals to processes. Read more about sending signals to processes here.

Signals can also be trasmitted to processes with combinations of keys:

  • Ctrl – Z : this sends the SIGSTOP signal to the current process, suspending it. This is mostly used for sending a process in the run in the background.
  • Ctrl – C : this sends the SIGINT signal to the current process, killing it. This is often used when a process freezes.
  • Ctrl – \ : this sends the SIGQUIT signal to the current process. It forces the process to stop.
Was this Tutorial helpful? Help others share on Facebook, Twitter, and Google Plus!
 
Enjoyed this video?
UNIX and Linux signal handling
"No Thanks. Please Close This Box!"