信 机制
概念:信 是在软件层次上对中断机制的一种模拟,是一种异步通信方式
所有信 的产生及处理全部都是由内核完成的
信 的产生:
1 按键产生
2 系统调用函数产生(比如raise, kill)
3 硬件异常
4 命令行产生 (kill)
5 软件条件(比如被0除,访问非法内存等)
信 处理方式:
1 缺省方式
2 忽略信
3 捕捉信
常用信 :
信 名 | 含义 | 默认操作 |
---|---|---|
SIGHUP | 该信 在用户终端关闭时产生,通常是发给和该终端关联的会话内的所有进程 | 终止 |
SIGINT | 该信 在用户键入INTR字符(Ctrl-C)时产生,内核发送此信 送到当前终端的所有前台进程 | 终止 |
SIGQUIT | 该信 和SIGINT类似,但由QUIT字符(通常是Ctrl-)来产生 | 终止 |
SIGILL | 该信 在一个进程企图执行一条非法指令时产生 | 终止 |
SIGSEV | 该信 在非法访问内存时产生,如野指针、缓冲区溢出 | 终止 |
SIGPIPE | 当进程往一个没有读端的管道中写入时产生,代表“管道断裂” | 终止 |
SIGKILL | 该信 用来结束进程,并且不能被捕捉和忽略 | 终止 |
SIGSTOP | 该信 用于暂停进程,并且不能被捕捉和忽略 | 暂停进程 |
SIGTSTP | 该信 用于暂停进程,用户可键入SUSP字符(通常是Ctrl-Z)发出这个信 | 暂停进程 |
SIGCONT | 该信 让进程进入运行态 | 继续运行 |
SIGALRM | 该信 用于通知进程定时器时间已到 | 终止 |
SIGUSR1/2 | 该信 保留给用户程序使用 | 终止 |
SIGCHLD | 是子进程状态改变发给父进程的。 | 忽略 |
信 命令:
信 发送的函数:
定时器函数
信 的捕捉
有时候不希望在接到信 时就立即停止当前执行,去处理信 ,同时也不希望忽略该信 ,而是延时一段时间去调用信 处理函数。这种情况可以通过阻塞信 实现。
信 的阻塞概念:信 的”阻塞“是一个开关动作,指的是阻止信 被处理,但不是阻止信 产生。

信 的状态:
信 递达(Delivery ):实际信 执行的处理过程(3种状态:忽略,执行默认动作,捕获)
信 未决(Pending):从产生到递达之间的状态
信 集操作函数
设定对信 集内的信 的处理方式(阻塞或不阻塞)
首先,若oset是非空指针,那么进程的当前信 屏蔽字通过oset返回。
其次,若set是一个非空指针,则参数how指示如何修改当前信 屏蔽字。
how可选用的值:(注意,不能阻塞SIGKILL和SIGSTOP信 )
示例-实现信 来了不打断程序,等程序做完相应的事情再响应信 (通过设置SIGINT信 ,当按下ctrl+c时,没有打印,过了五秒钟后自动打印。)
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!