用C创建一个Timer

时间:2013-03-11 20:48:57

标签: c timer

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

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

所以..我只希望有人可以解释一下定时器是如何工作的,也许可以给我一个代码来创建我自己的代码 - 如果它不是太高级的话。

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

2 个答案:

答案 0 :(得分:4)

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

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

#include <stdio.h>
#include <unistd.h>
#include <signal.h>

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;
}

答案 1 :(得分:4)

你可以这样做

#include <stdio.h>
#include <unistd.h>

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