概念
信号是一种软件中断,它提供了一种处理异步事件的方法,也是进程间唯一的异步通信方式。
信号的来源:
①硬件方式:按键会产生信号,比如ctrl+c组合键,产生一个SIGINT信号;硬件异常信号,比如除数为0,无效存储访问,由cpu通知内核,内核生成相应信号。
②软件方式: 用户在终端下调用kill命令向进程发送任意信号;进程调用kill或sigqueue函数发送信号;当某种条件已经具备时发送信号,如settimer定时器超时产生SIGALRM信号。
信号的种类:
使用kill -l 命令系统支持的全部信号。
①SIGHUP:用户退出shell,由该shell启动的所有进程将收到这个信号,默认动作为终止进程。
②SIGINT:用户按下ctrl+c组合键,用户终端向正在运行中的由该终端启动的进程发送此信号,默认动作为终止进程。
③SIGQUIT:用户按下ctrl+\组合键,用户终端向正在运行中的由该终端启动的进程发送此信号,默认动作为终止进程并产生core文件。
④SIGILL:cpu检测到某进程执行了非法指令,默认动作为终止进程并产生core文件。
⑤SIGTRAP:由断点指令或其他trap指令产生,默认动作为终止进程并产生core文件。
⑥SIGABRT:调用abort函数产生该信号,,默认动作为终止进程并产生core文件。
⑦SIGBUS:非法访问内存地址,包括内存地址对齐出错,默认动作为终止进程并产生core文件。
⑧SIGFPE:在发生致命的算术运算时产生,不仅包括浮点运算错误,还包括溢出及除数为0等错误,默认动作为终止进程并产生core文件。
⑨SIGKILL:无条件终止进程,本信号不能被忽略、处理和阻塞。默认动作为终止进程,它向系统管理员提供了一种可以杀死任何进程的方法。
⑩SIGUSR1:用户定义的信号,即程序员可以在程序中定义并使用该信号。默认动作为终止进程。<