信号和报警功能

Posted

技术标签:

【中文标题】信号和报警功能【英文标题】:Signal and alarm function 【发布时间】:2015-11-02 09:35:09 【问题描述】:

我在收到的 C 编程任务中需要一些帮助或建议... 任务是使用alarm(sec) 需要调用信号SIGALRM。 我必须在 1 秒内增加一个 long int 数字,并在屏幕上打印出该数字在那段时间内增加了多少次。我怀疑它必须与alarm(1); 我有增加数字的循环......位完全不知道如何在 1 秒后停止它,尤其是使用 signal(SIGALRM,xxx) 我应该粘贴我拥有的代码吗?

#include <stdio.h> 
#include <unistd.h> 
#include <signal.h> 

int loop_function()  
    int counter = 1; 
    long int n = 1; 
    while(n!=0)  
        ++counter; 
        n++; 
        printf("%d: %d\n",counter,n); 
     
 

int main()  
   loop_function();

【问题讨论】:

好的 - :) 这就是我编的... #include #include #include int loop_function() int counter = 1 ;长整数 n = 1;而(n!= 0) ++计数器; n++; printf("%d: %d\n",counter,n); int main() loop_function(); //我现在卡住了... 为什么看起来这么奇怪? @slavmir 用代码编辑你的答案,每行以四个空格开头:) 我认为 Kai 编辑了代码......谢谢对不起,我在这里完全是新人.. @slavmir 你能发布你的信号处理程序代码吗? 【参考方案1】:

很可能,这就是您要找的。​​p>

#include<stdio.h>
#include<signal.h>
#include<unistd.h>

void sigalrm_handler(int);
int loop_function();

static int counter = 1;
static long int n = 1;

int main()

    signal(SIGALRM, sigalrm_handler);
    //This will set the alarm for the first time.
    //Subsequent alarms will be set from sigalrm_handler() function
    alarm(1);

    printf("Inside main\n");

    while(1)
    
        loop_function();
    
    return(0);


void sigalrm_handler(int sig)

    printf("inside alarm signal handler\n");
    printf("%d: %d\n",counter,n);
    //exit(1);
    alarm(1);


int loop_function()

        ++counter;
        n++;

【讨论】:

以上是关于信号和报警功能的主要内容,如果未能解决你的问题,请参考以下文章

4路开关量信号点对点网络远程传输报警联动模块

ABB机器人电弧监测信号未设置焊接设备报警怎么回事?

智能家居安防系统的功能

STM32低功耗模式与烟雾报警器触发信号电路设计

红外报警硬件电路

51单片机课程设计:基于MQ-3的酒精浓度报警器