信 机制及实现

信 机制

概念:信 是在软件层次上对中断机制的一种模拟,是一种异步通信方式
所有信 的产生及处理全部都是由内核完成的

信 的产生:
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进行处理,非常感谢!

上一篇 2022年3月4日
下一篇 2022年3月4日

相关推荐