日期:2014-05-16 浏览次数:20767 次
by cszhao1980
signal更确切的称呼应该是soft interruption,顾名思义,就是一种能够通过软件手段达到
类似interruption目的的方法。
Unix最多支持NSIG(20)种软中断,进程的u中有u.signal[NSIG]数组,记录每种软中
断的处理方法。
u_signal〔n〕的值 |
当#n中断发生时 |
0 |
此进程将终止自身 |
奇数,非0 |
忽略此软件中断 |
偶数,非0 |
该值为用户空间中一过程的起始地址,应立即执行该过程 |
第#4 8系统调用ssig(),其主要功能就是设置数组“u_signal”,这个sys call有两个参数:
(1)a:signal type(0 ~ NSIG)
(2)u_signal(a)应该被设置的值
3614: ssig()
3615: {
3616: register a;
3617:
3618: a = u.u_arg[0];
3619: if(a<=0 || a>=NSIG || a ==SIGKIL) {
3620: u.u_error = EINVAL;
3621: return;
3622: }
3623: u.u_ar0[R0] = u.u_signal[a]; /返回old值
3624: &