信号产生,内核在进程表中以某种形式设置一个标志
信号处理:
1.忽略 ( SIG_IGN )
2.捕获 ( 函数地址 )
3.执行系统默认 ( SIG_DEL )
shell 会自动将后台进程对 SIG_INT,SIG_QUIT 的处理方式设置为忽略
早期版本,进程接收到信号对其处理时,将该信号动作重置为默认值。
信号发生后,到调用信号处理程序有个时间窗口,在此期间有可能另外一次信号中断。第二个中断会执行默认程序,从而造成终止该进程。
早期版本还有一个问题,进程不希望某种信号发生时,它不能关闭该信号,能做的只是忽略该信号。
一个系统调用可能被阻塞,阻塞时来了个信号,就会被中断。
早期系统,如果进程在执行一个低速系统调用而阻塞期间捕获到一个信号,而该系统调用就被中断而不再继续执行。
低速系统调用值得是可能会使进程用于阻塞的一类系统调用。
可重入函数(全局变量会被改变)
在信号产生(generation),和递送(delivery)之间的时间间隔内,称信号是未决(pending)的
raise() 允许进程向自身发送信号
sleep() 的实现,是 alarm(), pause()
许多系统已经用 sigaction 实现 signal
http://blog.youkuaiyun.com/u010027547/article/details/48656173
http://blog.youkuaiyun.com/smstong/article/details/50728022
1.引言
2.信号概念
3.函数 signal
4.不可靠信号
5.中断的系统调用
6.可重入函数
7.SIGCLD语义
8.可靠信号术语和语义
9.函数 kill 和 raise
10.函数 alarm 和 pause
11.信号集
12.函数 sigprocmask
13.函数 sigpending
14.函数 sigaction
15. 函数 sigsetjmp 和 siglongjmp
16. 函数 sigsuspend
17.函数abort
18.函数 system
19.函数 sleep,nanosleep和clock_nanosleep
20.函数 sigqueue
21.作业控制信号
22.信号名和编号