alarm()在一段时间后随机停止

时间:2018-11-15 03:09:30

标签: c linux embedded-linux

我使用一种旧的方式为Linux用户空间应用程序实现了一个计时器。

    int main(){
        //do some things
        signal(SIGALRM, do_things);
        alarm(1);
        while(1) {
       //other things
        }
    }

    void do_things()
    {
        tic++;//global variable
        printf("time: %d...", tic);
        if (tic%30 == 0) {
            printf("hha\n ");
            do_calculation();
        }
        alarm(1);
    }

它运行随机的时间并停止打印任何内容,该应用程序仍然有效,但我的计时器似乎消失了。我不知道应该从哪里开始检查。任何建议表示赞赏。

编辑:做了一些谷歌搜索,信号处理程序不应该包含“业务逻辑”或进行诸如printf之类的库调用。

所有信号处理程序应该做的是设置一个要由非中断代码执行的标志。

尽管我仍然不知道导致消息消失的真正原因是什么。

0 个答案:

没有答案