C中的阻塞/非阻塞计时器

时间:2010-10-07 06:33:22

标签: c timer

这可能是一个经常重复的问题,对不起再把它带回来。我无法找到解决方案:(。我正在Linux中用C语言编写VM监控代码。我希望每隔10秒获取所有VM的读写次数。是否有任何C库提供此功能(定时器)单独),阻塞/非阻塞计时器无关紧要。谢谢!!

此致 Sethu

2 个答案:

答案 0 :(得分:7)

对于非阻塞计时器(在POSIX系统上),请使用alarm

int main(void) {
  signal(SIGALRM, monitor);
  monitor(0);
  /* ... */
}

void monitor(int signal) {
  /* ... */
  alarm(10);
}

但是对于阻止计时器,请按 lalli 所述使用sleep

答案 1 :(得分:1)

sleep(10);

将使线程在unix系统中休眠10秒。在带有监控代码的循环中使用它,你很高兴。如果您使用Windows作为主机进行监控,则睡眠功能将在几毫秒内接受。

此外,由于需要多线程/多处理,实现将根据操作系统/平台而有所不同。