作者bluestar8783 (蓝星)
看板LinuxDev
标题[问题] timer start/stop?
时间Thu Mar 24 10:53:20 2011
要在process中启动/停止一个每10ms会执行的timer
现在使用setitimer/signal来做此动作(底下有个范例,有错误请纠正)
但是我有几个问题想请问
1. 启动timer後,该怎麽暂停?或是删除?(可否用底下范例说明)
2. handler函式所带的参数(int a),是要怎麽传进去呢?
还是说用global变数来传递?
感谢!
void my_alarm_handler(int a)
{
cerr<<"test"<<endl;
}
int main() {
struct itimerval t;
t.it_interval.tv_usec = 10000;
t.it_interval.tv_sec = 0;
t.it_value.tv_usec = 0;
t.it_value.tv_sec = 0;
if( setitimer(ITIMER_REAL, &t, NULL) < 0 ) {
cerr<< "setitimer error."<<endl;
return -1;
}
signal(SIGALRM, my_alarm_handler);
while(1) {
sleep(1);
}
return 0;
}
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.124.165.83
1F:推 antontw:好像用 alarm 这个 function 来做的人比较多? 03/24 14:50
2F:→ antontw:alarm - set an alarm clock for delivery of a signal 03/24 14:51
3F:推 askacis:1.把t的各成员设为0再setitimer一次就可以停止了 03/24 15:54
4F:→ askacis:2.signal handler传进来的的就是对应的信号值,以你的为例 03/24 15:56
5F:→ askacis:就是SIGALRM这个信号~~ 03/24 15:56
6F:→ askacis:另外,原po有跑过你贴的code吗? 03/24 15:57
7F:→ bluestar8783:这个范例是从网路上别人的说明上贴过来的,尚未跑过 03/24 21:27
8F:→ bluestar8783:ask大大,这个code有问题吗? 03/24 21:28
9F:→ bluestar8783:因为要设定ms的timer,而alarm是second的,所以... 03/24 21:29