51Testing软件测试论坛
标题:
signal 和 alarm函数
[打印本页]
作者:
奇犽
时间:
2019-4-8 15:28
标题:
signal 和 alarm函数
针对一次性的动作,最简单的就是使用signal和alarm函数来调用。
假如在callback函数未执行的时候,要取消的话,那么可以使用alarm(0)来取消调用该回调函数。我们用如下的代码来测试(看输出的全局变量的值):
#include <stdio.h>
#include <stdbool.h>
#include <string.h>
#include <errno.h>
#include <signal.h>
#include <unistd.h>
int Value;
void callback_onAlarm(int param);
int main(void)
{
printf("Main thread\n");
Value = 10;
signal(SIGALRM, callback_onAlarm);
printf("<start alarm1>\n");
alarm(10);
sleep(5);
alarm(0);
Value = 50;
signal(SIGALRM, callback_onAlarm);
printf("<start alarm2>\n");
alarm(10);
while(1);
return 0;
}
void callback_onAlarm(int param)
{
printf("Alarm callback, Value is %d\n", Value);
alarm(0);
}
复制代码
以上的代码,其输出的结果如下:
Main thread
<start alarm1>
<start alarm2>
Alarm callback, Value is 50
复制代码
欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/)
Powered by Discuz! X3.2