如何创建计时器?像Visual Basic中的计时器;你设置一个间隔,如果启用了定时器,它会一直等到时间结束。
我不想使用现有的库,因为我想知道它是如何工作的。
所以..我只希望有人可以解释一下定时器是如何工作的,也许可以给我一个代码来创建我自己的代码 - 如果它不是太高级的话。
编辑: 我想为linux系统创建一个。
答案 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;
}