打印
[嵌入式linux]

signal的疑问?

[复制链接]
1397|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
longwuyi|  楼主 | 2009-6-2 06:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在下面的程序中, 为啥需要在timefunc函数中对SIGPROF信号的
处理进行重复注册:
    #include  <sys/select.h>
    #include  <sys/itimer.h>
    #include <stdio.h>
    #include <unistd.h>
    #include <signal.h>
    int n = 0;
    void timefunc(int sig)                      {
        fprintf(stderr, "ITIMER_PROF[%d] ", n++);
        signal(SIGPROF, timefunc);                }

    void main()
    {
        struct itimerval value;
        value.it_value.tv_sec=1;                    value.it_value.tv_usec=500000;
        value.it_interval.tv_sec=1;                    value.it_interval.tv_usec=500000;
        signal(SIGPROF, timefunc);                     setitimer(ITIMER_PROF, &value, NULL);             while (1);
    }

相关帖子

沙发
tonylulu168| | 2009-6-2 12:51 | 只看该作者

re

由于历史原因信号值小于SIGRTMIN的都是不可靠信号
进程每次处理信号后,就将对信号的响应设置为默认动作。
在某些情况下,将导致对信号的错误处理;因此,用户如果不希望这样的操作,那么就要在信号处理函数结尾再一次调用signal(),重新安装该信号。

或者直接使用sigaction()函数来安装信号;

使用特权

评论回复
板凳
longwuyi|  楼主 | 2009-6-2 21:45 | 只看该作者

非常感谢tonylulu168

非常感谢tonylulu168

使用特权

评论回复
地板
sinanjj| | 2009-6-3 12:32 | 只看该作者

从来不用信号这种老掉牙的

用socket,直接的网络化基础

使用特权

评论回复
5
fanyinfu| | 2009-7-2 18:39 | 只看该作者

sdfsdfsd

sfddfsfdf

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

40

主题

61

帖子

0

粉丝