|
小弟现在使用miniGUI编程,想按一个按钮触发一个200毫秒的定时器,
执行函数roamfun()。使用setitimer函数,以及SIGALRM信号,程序如下。但我设的周期根本不起作用,系统以极快的频率在执行roamfun()。是不是miniGUI中已经用了该信号?
struct itimerval tv;
struct sigaction siga;
tv.it_interval.tv_sec = 0;
tv.it_interval.tv_usec = 200;
tv.it_value.tv_sec = 0;
tv.it_value.tv_usec = 200;
siga.sa_handler = roamfun;
siga.sa_flags = 0;
memset (&siga.sa_mask, 0, sizeof(sigset_t));
sigaction (SIGALRM, &siga, NULL);
setitimer(ITIMER_REAL, &tv, NULL);
while(1);
另外如果我用SIGPROF倒是可以,程序如下。但我不想用while(1)循环,我还想做别的事,请问该如何解决?
sigaction (SIGPROF, &siga, NULL);
setitimer(ITIMER_PROF, &tv, NULL);
while(1); |
|