- 论坛徽章:
- 2
|
今天研究timerfd,尝试了很就,发现timerfd_settime的第二个参数为0的时候,就会卡死在那里;如果设置为TFD_TIMER_ABSTIME,就可以达到预期效果;
(timerfd_create、clock_gettime的时间类型(第一个参数)必要要一致,否则没有效果;可以为CLOCK_MONOTONIC或者CLOCK_REALTIME都可以)
主要测试代码如下:- void test_timerfd()
- {
- struct itimerspec newValue;
- struct itimerspec oldValue;
- bzero(&newValue, sizeof newValue);
- bzero(&oldValue, sizeof oldValue);
- int fd = timerfd_create(CLOCK_MONOTONIC, 0);
- clock_gettime(CLOCK_MONOTONIC, &(newValue.it_value));
- newValue.it_value.tv_sec += 2;
- timerfd_settime(fd, TFD_TIMER_ABSTIME, &newValue, NULL);
- long exp = 0;
- ssize_t s = read(fd, &exp, sizeof(long));
- }
复制代码 请大侠们帮忙看看,谢谢 |
|