信号及信号处理(一): 聊聊Linux系统中所有信号及其含义

来源:互联网 发布:为什么优酷提示没网络 编辑:程序博客网 时间:2024/05/26 15:55

       首先,在Linux的shell中输入命令

       kill -l
       可显示Linux系统支持的全部信号如下。


       我们看看他们的具体含义:

       (1). SIGHUP : 当用户退出Shell时, 由Shell启动的所有进程将收到这个信号,默认动作为终止进程。

       (2). SIGINT : 用户按下<Ctrl+C>组合键时,用户终端向正在运行中的由该终端启动的程序发出此信号,默认动作为终止进程。

       (3). SIGQUIT : 当用户按下<Ctrl+\>组合键时产生该信号,用户终端向正在运行中的由该终端启动的程序 发出此信号。默认动作为终止进程并产生core文件。

       (4). SIGILL : CPU检测到某进程执行了非法指令。默认动作为终止进程并产生core文件。

       (5). SIGTRAP : 该信号由断点指令或其他trap指令产生。默认动作为终止进程并产生core文件。

       (6). SIGABRT : 调用abort函数时产生该信号。默认动作为终止进程并产生core文件。

       (7). SIGBUS : 非法访问内存地址,包括内存地址对齐(alignment)出错,默认动作为终止进程并产生core文件。

       (8). SIGFPE : 在发生致命的算术运算错误时发出。不仅包括浮点运算出错,还包括溢出及除数为0等所有的算术错误。默认动作为终止进程并产生core文件。

       (9). SIGKILL : 无条件终止进程。本信号不能被忽略、处理和阻塞。默认动作为终止进程。它向系统管理员提供了一种可以杀死任何进程的方法。

       (10). SIGUSR1 : 用户定义的信号,即程序员可以在程序中定义并使用该信号。默认动作为终止进程。

       (11). SIGSEGV : 指示进程进行了无效的内存访问。默认动作为终止进程并产生core文件。

       (12). SIGUSR2 : 这是另外一个用户自定义信号,程序员可以在程序中定义并使用该信号。默认动作为终止进程。

       (13). SIGPIPE : Broken pipe: 向一个没有读端的管道写数据。默认动作为终止进程。

       (14). SIGALRM : 定时器超时,超时的时间由系统调用alarm设置。默认动作为终止进程。

       (15). SIGTERM : 程序结束(terminate)信号,与SIGKILL不同的是,该信号可以被阻塞和处理。通常用来要求程序正常退出。执行Shell命令kill时,缺省产生这个信号。默认动作为终止进程。

       (16). SIGCHLD : 子进程结束时,父进程会收到这个信号。默认动作为忽略该信号。

       (17). SIGCONT : 让一个暂停的进程继续执行。

       (18). SIGSTOP : 停止(stopped)进程的执行。注意它和SIGTERM以及SIGINT的区别 : 该进程还未结束,只是暂停执行。本信号不能被忽略、处理或阻塞。默认动作为暂停进程。

       (19). SIGTSTP : 停止进程的运行,但该信号可以被处理和忽略。按下<Ctrl+Z>组合键时发出这个信号。默认动作为暂停进程。

       (20). SIGTTIN : 当后台进程要从用户终端读数据时,该终端中所有进程会收到SIGTTIN信号。默认动作为暂停进程。

       (21). SIGTTOU : 该信号类似于SIGTTIN,在后台进程要向终端输出数据时产生。默认动作为暂停进程。

       (22). SIGURG : 套接字(socket)上有紧急数据时,向当前正在运行的进程发出此信号,报告有紧急数据到达。默认动作为忽略该信号。

       (23). SIGXCPU : 进程执行时间超过了分配给该进程的CPU时间,系统产生该信号并发送给该进程。默认动作为终止进程。

       (24). SIGXFSZ : 超过文件最大长度的限制。默认动作为终止进程并产生core文件。

       (25). SIGVTALRM : 虚拟时钟超时时产生该信号,类似于SIGALRM,但是它只计算该进程占用的CPU时间。默认动作为终止进程。

       (26). SIGPROF : 类似于SIGVTALRM,它不仅包括该进程占用的CPU时间还包括执行系统调用的时间。默认动作为终止进程。

       (27). SIGWINCH : 窗口大小改变时发出。默认动作为忽略该信号。

       (28). SIGIO : 此信号向进程指示发生了一个异步IO时间。默认动作为忽略。

       (29). SIGPWR : 关机。默认动作为终止进程。

       (30). SIGSYS:无效的系统调用。默认动作为终止进程并产生core文件。

       (31). SIGRTMIN ~ (64)SIGRTMAX:Linux的实时信号,它们没有固定的含义(或者说可以由用户自由使用)。注意,Linux线程机制使用了前三个实时信号。所有的实时信号的默认动作都是终止进程。



原创粉丝点击