SIGNAL(7)                      Linux Programmer's Manual                      SIGNAL(7)

 

NAME
       signal - 有效信号的清单



       下面 列出 Linux 支持的 信号. 某些 信号 依赖于 体系结构(architecture).

       首先, POSIX.1 描述了 下列 信号.

 

       信号                 值      动作   说明
       ─────────────────────────────────────────────────────────────────────
       SIGHUP            1       A         在控制终端上是挂起信号, 或者控制进程结束
       SIGINT              2       A         从键盘输入的中断(ctrl-C 解释成一个SIGINT 信号,记在该进程PCB中,也可以发送一个SIGINT信号给该进程)
       SIGQUIT           3       C         从键盘输入的退出(ctrl-\)
       SIGILL              4       C          无效硬件指令
       SIGABRT         6        C           非正常终止, 可能来自 abort(3)
       SIGFPE           8        C            浮点运算例外(硬件异常产生信号,这些条件由硬件检测到并通知内核,然后内核向当前进程发送适当的信号。例如当前进程执行了除以0的指令,CPU的运算单元会产生异常,内核将这个异常解释为SIGFPE信号发送给进程)
       SIGKILL          9      AEF         杀死进程信号
       SIGSEGV       11       C           无效的内存引用(比如当前进程访问了非法内存地址,MMU会产生异常内核将解释成这个异常为SIGSEGV)
       SIGPIPE             13       A     管道中止: 写入无人读取的管道(向读端己关闭的管道写数据时产生SIGPIPE)
       SIGALRM           14       A     来自 alarm(2) 的超时信号(当内核检测到某种软件条件发生时也可以通过信号通知进程,例如闹钟超时产生SIGALRM信号,向读端己关闭的管道写数据时产生SIGPIPE)
       SIGTERM           15        A     终止信号(如果不明确指定信号则发送SIGTERM)
       SIGUSR1   30,10,16    A     用户定义的信号 1
       SIGUSR2   31,12,17    A     用户定义的信号 2
       SIGCHLD   20,17,18    B     子进程结束或停止
       SIGCONT   19,18,25          继续停止的进程
       SIGSTOP   17,19,23   DEF    停止进程
       SIGTSTP   18,20,24       D         终端上发出的停止信号(Ctrl-Z)
       SIGTTIN     21,21,26       D        后台进程试图从控制终端(tty)输入
       SIGTTOU    22,22,27       D        后台进程试图在控制终端(tty)输出

       下面的 信号 定义 在 SUSv2 中, 而 POSIX.1 没有 定义.

 

       信号           值      动作   说明
       ───────────────────────────────────────────────────────────────────
       SIGBUS      10,7,10     C     总线错误 (不正确的内存访问)
       SIGPOLL                 A     I/O就绪事件 (Sys V). 等同于SIGIO
       SIGPROF     27,27,29    A     系统资源定时器(Profiling timer)超时
       SIGSYS      12,-,12     C     用错误参数调用系统例程 (SVID)
       SIGTRAP        5        C     跟踪/断点自陷
       SIGURG      16,23,21    B     套接口上出现 urgent 情况 (4.2 BSD)
       SIGVTALRM   26,26,28    A     虚拟超时时钟 (4.2 BSD)
       SIGXCPU     24,24,30    C     超过了CPU时间限制 (4.2 BSD)
       SIGXFSZ     25,25,31    C     超过了文件大小限制 (4.2 BSD)

       (这里的  SIGSYS, SIGXCPU, SIGXFSZ, 以及 某些 系统上 的 SIGBUS, Linux 的 缺省动作
       (到2.3.27版) 是 A(结束), 而 SUSv2 声明是 C(结束且核心转储).)

       下面 是 其他 几个 信号.

 

       信号           值      动作   说明
       ──────────────────────────────────────────────────────────────
       SIGIOT         6        C     IOT 自陷. 等同于 SIGABRT
       SIGEMT       7,-,7

       SIGSTKFLT    -,16,-     A     协处理器堆栈错误
       SIGIO       23,29,22    A     I/O 有效信号 (4.2 BSD)
       SIGCLD       -,-,18           等同于 SIGCHLD
       SIGPWR      29,30,19    A     电源无效 (System V)
       SIGINFO      29,-,-           等同于 SIGPWR
       SIGLOST      -,-,-      A     文件锁丢失
       SIGWINCH    28,28,20    B     窗口大小调整信号 (4.3 BSD, Sun)
       SIGUNUSED    -,31,-     A     未使用的信号 (将成为 SIGSYS)

       这里的 - 指 信号 不存在; 可能 给出 三个值, 第一个值 一般 用于  alpha  和  sparc,
       中间的值  用于  i386,  ppc  和  sh, 最后一个 是 mips 的.  信号29 在 alpha机上 是
       SIGINFO / SIGPWR , 而在 sparc机上 是 SIGLOST

 

       "动作(Action)"栏 的 字母 有 下列 含义:

       A      缺省动作是结束进程.

       B      缺省动作是忽略这个信号.

       C      缺省动作是结束进程, 并且核心转储.

       D      缺省动作是停止进程.

       E      信号不能被捕获.

       F      信号不能被忽略.

       (译注: 这里 "结束" 指 进程 终止 并 释放资源, "停止" 指 进程 停止 运行, 但是 资源
       没有 释放, 有可能 继续 运行.)



       POSIX.1


BUGS
       SIGIO  和 SIGLOST 有 相同的 值. 后者 在 内核 源码 中 被注释 掉了, 但是 某些 软件
       构造的 进程 仍然 认为 信号29 是 SIGLOST.



       kill(1), kill(2), setitimer(2)


[中
       徐

[中
       2000/10/15 第一版
       2001/11/24 第一次修订


       http://cmpp.linuxforum.net

 

Linux 1.3.88                         April 14, 1996                           SIGNAL(7)

信号处理。。。

man -k signal

man 2 signal

#include <signal.h>

typedef void (*sighandler_t)(int) //

/*

@param int signum

@param sighandler_t handler 函数指针

@return sighandler

*/

sighandler_t signal(int signum,sighandler_t handler)

void (*signal ( int signum,void(*handler)(int) ) ) (int); // c 与陷阱

往右一看是一个函数,

强制类型转化

(signal)0 零马上变成地址了

(signal)1 一马上变成地址了

两都变成了一个函数指针。

内存零地址存的内容。

 

signal 信号列表 (kill -l) - jake - 自由人生
signal 信号列表 (kill -l) - jake - 自由人生
signal 信号列表 (kill -l) - jake - 自由人生
signal 信号列表 (kill -l) - jake - 自由人生

Logo

更多推荐