码迷,mamicode.com
首页 > 系统相关 > 详细

linux信号

时间:2016-01-09 16:36:27      阅读:192      评论:0      收藏:0      [点我收藏+]

标签:

信号的基本概念

为了了解信号,先从一个熟悉的场景开始说起:

1. 用户输入命令,在shell下启动一个前台进程。

2. 当用户按下Ctrl-C,这个键盘输入将产生一个硬件中断。

3. 如果CPU正在执行这个进程的代码,则该进程的用户空间代码暂停执行,CPU从用户态切换到内核态处理硬件中断。

4. 终端驱动程序将Ctrl-C解释成一个SIGINT信号,记在该进程的PCB中(也可以说发送了一个SIGINT信号给该进程)。

5. 当某个时刻要从内核返回到该进程的用户空间代码继续执行之前,首先处理PCB中记录的信号,发现有一个SIGINT信号待处理,而这个信号的默认处理动作是终止进程,所以直接终止进程而不再返回它的用户空间代码执行。

Ctrl-C产生的信号只能发送给前台进程,如果要让一个进程处于后台运行,可以在一个命令后面加个&,这样shell就不必等待进程结束就可以接受新的命令、启动新的进程。shell可以同时运行一个前台进程和任意多个后台进程,只有前台进程才能接收到像Ctrl-C这种控制键产生的信号。前台进程在运行的过程中用户可以随时按下Ctrl-C而产生一个信号,也就是说该进程的用户空间代码执行到任何的地方都有可能收到SIGINT信号而终止,所以信号相对于进程的控制流程来说是异步的

linux信号

标签:

原文地址:http://www.cnblogs.com/stemon/p/5116564.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!