免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: eclipse_2
打印 上一主题 下一主题

信号处理的时机 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2008-11-14 09:40 |只看该作者
原帖由 eclipse_2 于 2008-11-14 09:28 发表

我觉得不应该在你说的那个地方吧
这个是我看的代码 虽然是个for循环 但是handler_signal()处理完成后 do_signal()也返回了,进程继续执行。

do_signal()
{
       for (; {
                unsigned long signr; ...




你的内核代码那个版本,我看的是2.6.25,不同版本的内核代码实现细节不一样。

论坛徽章:
0
12 [报告]
发表于 2008-11-14 09:49 |只看该作者
原帖由 greek_zjb 于 2008-11-14 09:40 发表




你的内核代码那个版本,我看的是2.6.25,不同版本的内核代码实现细节不一样。

2.4.0版本的
细节确实是不一样的
不过我觉得流程还是差不多的吧

论坛徽章:
0
13 [报告]
发表于 2008-11-14 10:02 |只看该作者
原帖由 eclipse_2 于 2008-11-14 09:49 发表

2.4.0版本的
细节确实是不一样的
不过我觉得流程还是差不多的吧



嗯,处理流程大部分都是一样的。看看你贴的代码:
do_signal()
{
       for (; {
               .......

                ka = &current->sig->action[signr-1];
                if (ka->sa.sa_handler == SIG_IGN) {
                        if (signr != SIGCHLD)
                                continue;
                        /* Check for SIGCHLD: it's special.  */
                        while (sys_wait4(-1, NULL, WNOHANG, NULL) > 0)
                                /* nothing */;
                        continue;
                }

                if (ka->sa.sa_handler == SIG_DFL) {
                 .......

                /* Whee!  Actually deliver the signal.  */
                handle_signal(signr, ka, &info, oldset, regs);
                return 1;
        }
}


上面3个红色部分,前两部分就是对SIG_IGN和SIG_DFL的处理,对于这两种类型很多时候都continue了,就是继续执行下一个信号处理。而剩下的那些(包括用户自己定义的)就执行handle_signal函数,然后函数就返回了(最终执行用户定于的信号处理函数了)
从这里看出,实际上就执行了一个用户自定义的信号的处理函数。其他自定义信号的处理函数要等到下一次再调用do_signal的时候了。:)

[ 本帖最后由 greek_zjb 于 2008-11-14 10:16 编辑 ]

论坛徽章:
0
14 [报告]
发表于 2008-11-14 10:42 |只看该作者
原帖由 greek_zjb 于 2008-11-14 10:02 发表



嗯,处理流程大部分都是一样的。看看你贴的代码:


上面3个红色部分,前两部分就是对SIG_IGN和SIG_DFL的处理,对于这两种类型很多时候都continue了,就是继续执行下一个信号处理。而剩下的那些(包括 ...



我一直是这样认为的 只是一个人在折腾 不是很确定
所以贴出来跟你们讨论一下 呵呵
给分了~

论坛徽章:
0
15 [报告]
发表于 2008-11-14 10:55 |只看该作者
呵呵,大家多多交流交流
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP