信号:异步的事件通知机制
应用程序是隔离的,不知道外面知道的事情,只有通过内核通知才知道外面发生的事情
哪些事件会产生信号:硬件、应用程序、用户
产生信号的事件有哪些
硬件:
-
执行非法的指令 ---> SIGILL (illegal)
-
访问非法的指令 ----> SIGSEGV (segment fault)
-
除0异常 ----> SIGFPE (find-point exception)
内核:管道读端关闭, 进程写管道 ----> SIGPIPE
应用程序:子进程死亡 ----> SIGCHLD
组合键:ctrl + c ----> SIGQUIT
信号的执行流程
从产生信号到移交给应用程序之间的时间称为喷顶时间
如何注册信号处理函数
signal
参数:signal、sig_handler
成功:原来的信号处理函数
失败:SIG_ERR