在 C 中创建计时器

Nor*_* Me 2 c timer

如何创建计时器?类似于 Visual Basic 中的计时器;您设置了一个间隔,如果启用了计时器,它会一直等到时间到。

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

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

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

Bry*_*ier 5

下面是一个非常基本的例子,它将在 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;
}
Run Code Online (Sandbox Code Playgroud)

  • 并为任务使​​用 100% 的 CPU。 (10认同)