进程中的信号是用于进程之间通信的一种简单消息,通常是下表中的一个标号数值,并且不携带任何其它的信息。

       例如当一个子进程终止或结束时,就会产生一个标号为17 的SIGCHILD 信号发送给父进程,以通知父进程有关子进程的当前状态。

        关于一个进程如何处理收到的信号,一般有两种做法:

        一是程序的进程不去处理,此时该信号会由系统相应的默认信号处理程序进行处理;

       二是进程使用自己的信号处理程序来处理信号。

/linux-0.11/kernel/signal.h定义信号如下 :

#define SIGHUP   1
#define SIGINT   2
#define SIGQUIT   3
#define SIGILL   4
#define SIGTRAP   5
#define SIGABRT   6
#define SIGIOT   6
#define SIGUNUSED  7
#define SIGFPE   8
#define SIGKILL   9
#define SIGUSR1  10
#define SIGSEGV  11
#define SIGUSR2  12
#define SIGPIPE  13
#define SIGALRM  14
#define SIGTERM  15
#define SIGSTKFLT 16
#define SIGCHLD  17
#define SIGCONT  18
#define SIGSTOP  19
#define SIGTSTP  20
#define SIGTTIN  21
#define SIGTTOU  22
 

标号
名称
说明
默认操作
       1 
SIGHUP
(Hangup) 当你不再控制终端时内核会产生该信号,
或者当你关闭Xterm 或断modem。由于后台程序没有控制的终端,因而它们常用SIGUP 来发出需要重新读取其配置文件的信号。
(Abort)
挂断控制中断或进程。
       2 
SIGINT
(Interrupt) 来自键盘的终端。通常终
驱动程序会将其与^C 绑定。
(Abort)
终止程序。
       3 
SIGQUIT
(Quit) 来自键盘的终端。通常终端驱动程序会将其与^\绑定。
(Dump) 程序被终止并产生dump core 文件。
       4 
SIGILL
(Illegal Instruction) 程序出错或者执行了一个非法的操作指令。
(Dump) 程序被终止并产生dump core 文件。
       5 
SIGTRAP
(Breakpoint/Trace Trap) 调试用,跟踪断点。
 
       6 
SIGABRT
(Abort) 放弃执行,异常结束。
(Dump) 程序被终止并产生dump core 文件。
6
SIGIOT
(IO Trap) 同SIGABRT
(Dump) 程序被终止并产生dump core 文件。
       7 
SIGUNUSED
(Unused) 没有使用。
 
       8 
SIGFPE
(Floating Point Exception) 浮点异常。
(Dump) 程序被终止并产生dump core 文件。
       9 
SIGKILL
(Kill) 程序被终止。该信号不能被捕获或者被忽略。想立刻终止一个进程,就发送信号9。注意程序将没有任何机会做清理工作。
(Abort) 程序被止。
      10 
SIGUSR1
(User defined Signal 1) 用户定义的信号。
(Abort) 程序被止。
      11 
SIGSEGV
(Segmentation Violation) 当程序引用无效的内存时会产生此信号。比如:寻址没有映射的内存;寻址未许可的内存。
(Dump) 程序被终止并产生dump core 文件。
      12 
SIGUSR2
(User defined Signal 2) 保留给用户程序用于IPC 或其它目的。
(Abort) 程序被止。
      13 
SIGPIPE
(Pipe) 当程序向一个套接字或管道写时由于没有读者而产生该信号。
(Abort) 程序被止。
      14 
SIGALRM
(Alarm) 该信号会在用户调用alarm 系统调用所设置的延迟秒数到后产生。该信号常用判别于系统调用超时。
(Abort) 程序被止。
      15 
SIGTERM
(Terminate) 用于和善地要求一个程序终止。它是kill的默认信号。与SIGKILL 不同,该信号能被捕获,这样就能在退出运行前做清理工作。
(Abort) 程序被止。
      16 
SIGSTKFLT
(Stack fault on coprocessor) 协处理器堆栈错误。
(Abort) 程序被止。
      17 
SIGCHLD
(Child) 父进程发出。停止或终止子进程。可改变其含义挪作它用。
(Ignore) 子进程停止或结束。
      18 
SIGCONT
(Continue) 该信号致使被SIGSTOP 停止的进程恢复运行。可以被捕获。
(Continue) 恢复进程的执行。
      19 
SIGSTOP
(Stop) 停止进程的运行。该信号不可被捕获或忽略
(Stop) 停止进程运行。
      20 
SIGTSTP
(Terminal Stop) 向终端发送停止键序列。该信号可以被捕获或忽略。
(Stop) 停止进程运行。
      21 
SIGTTIN
(Terminal Input on Background) 后台进程试图从一个不再被控制的终端上读取数据,此时该进程将被停止,直到收到SIGCONT 信号。该信号可以被捕获或
忽略。
(Stop) 停止进程运行。
      22 
SIGTTOU
(TTY Output on Background) 后台进程试图向一个不再被控制的终端上输出数据,此时该进程将被停止,直到收到SIGCONT 信号。该信号可被捕获或忽略。
(Stop) 停止进程运行。