针对一次性的动作,最简单的就是使用signal和alarm函数来调用。
假如在callback函数未执行的时候,要取消的话,那么可以使用alarm(0)来取消调用该回调函数。我们用如下的代码来测试(看输出的全局变量的值):
#include
#include
#include
#include
#include
#include int Value;
void callback_onAlarm(int param);
int main(void)
{
printf("Main thread\n");
Value = https://www.it610.com/article/10;
signal(SIGALRM, callback_onAlarm);
printf("\n");
alarm(10);
sleep(5);
alarm(0);
Value = https://www.it610.com/article/50;
signal(SIGALRM, callback_onAlarm);
printf("\n");
alarm(10);
while(1);
return 0;
}void callback_onAlarm(int param)
{
printf("Alarm callback, Value is %d\n", Value);
alarm(0);
}
以上的代码,其输出的结果如下:
Main threadAlarm callback, Value is 50
【signal 和 alarm函数】