signal函数和SIGALRM信号的疑问

signal函数和SIGALRM信号的疑问

https://img1.sycdn.imooc.com//climg/630f25e3092d1c0b18660852.jpg

//当捉到SIGALRM信号后,擦初原图形,绘制新图形

int main()

{

    init_game_ui();


    //捕捉SIGALRM信号

    signal(SIGALRM,sig_handler);


    //开启定时器,每隔0.8s发送一次SIGALRM

    alarm_us(tm);


    while(1);

    return 0;

}

  1. 不是说signal传的是个int么 这里为何可以直接写SIGALRM?

  2. 是不是这个函数 setitimer(ITIMER_REAL,&value,NULL);去改变的信号,然后signal捕捉到是SIGALRM信号的时候执行回调函数sig_handler

  


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
山行老师 2022-08-31 21:48:22

1)宏定义SIGALRM最终是一个数值常量(或者叫信号编号),它是可以被赋值给函数signal()的第一个参数;
2)函数
setitimer( )和函数signal( )都是linux系统提供的函数;前者是设置一个计时器,计时器超时后,向进程发送SIGALRM信号;后者是设置信号对应的回调函数为用户自己的函数,两者一起使用的效果就是时间到执行用户的函数sig_handler( );

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师