用C创建一个Timer

如何创建计时器? 像Visual Basic中的计时器; 你设置一个间隔,如果启用了定时器,它会一直等到时间结束。

我不想使用现有的库,因为我想知道它是如何工作的。

所以..我只是希望有人可以解释我的计时器是如何工作的,也许可以给我一个代码来创建我自己的例子 – 如果它不是太先进的话。

编辑:我想为Linux系统创建一个。

你可以做到这一点

#include  #include  int main() { printf("wait\n"); sleep(3); printf("time elapsed\n"); return 0; } 

以下是一个在Linux下运行的非常基本的示例。 如果您查看signal的手册页,您会看到它被弃用以支持sigaction 。 重要的是不要忘记volatile ,否则while循环可能不会终止,具体取决于优化。 另请注意, SIGALRM是一种高度共享的资源,可供其他计时器设备使用,并且只有一个。

程序将打印Waiting三秒钟而不是打印后退出Finally ...一次。

 #include  #include  #include  volatile int mark = 0; void trigger(int sig) { mark = 1; } int main(void) { signal(SIGALRM, trigger); alarm(3); while (!mark) { printf("Waiting\n"); } printf("Finally ...\n"); return 0; }