加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何正确使用SIGALRM?

发布时间:2020-12-16 09:44:09 所属栏目:百科 来源:网络整理
导读:我已经制作了这个代码,我必须使用警报信号(SIGALRM)让程序每隔3秒打印一条消息“我还活着”. 但它不起作用,只有当我按下CTR-C时,它才会发出“我活着”的消息,我猜 我没有把SIGALRM功能放在正确的位置,你能帮助我吗? #include stdlib.h#include signal.h#inc
我已经制作了这个代码,我必须使用警报信号(SIGALRM)让程序每隔3秒打印一条消息“我还活着”.

但它不起作用,只有当我按下CTR-C时,它才会发出“我活着”的消息,我猜
我没有把SIGALRM功能放在正确的位置,你能帮助我吗?

#include <stdlib.h>
#include <signal.h>
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>

unsigned Count = 0; //Counts the number of times it receives the signal SIGINT.
void mypause(int sign); //prototype of the function my pause.

void mypause(int sign) {
  signal(SIGALRM,mypause); //Set alarm clock for 3 seconds.
  alarm(3);
  printf("I'm Alive");
  signal(SIGINT,mypause);
  switch (sign) {
  case SIGINT:
    printf("nPressed CTR-Cn");
    printf("I'm running,waiting for a signn");
    Count++;
    break;
  case SIGQUIT:
    printf("nPressed CTR-n");
    printf("You pressed CTR-C %d times",Conta);
    exit(0); //Exit program.
    break;
  }
}

int main() {
  signal(SIGALRM,mypause);
  signal(SIGINT,mypause);
  signal(SIGQUIT,mypause);
  printf("nI'm running waiting for a signaln");
  while (1) {}
  return (0);
}

解决方法

也许在你的main()中添加alarm(3)?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读