C定时器回调

sin*_*yma 6 c unix windows posix timer

对UNIX和Windows上的C语言类似于setTimeout的内容感兴趣.

基本上,我想:

start_timer(&function_pointer, int time_in_secs)
Run Code Online (Sandbox Code Playgroud)

或尽可能接近我.

此外,类似于setInterval的东西会很好(每隔n秒调用一次回调),但这可以使用setTimeout实现:)

sco*_*ttm 8

Win32中的SetTimer,使用TimerProc作为回调.

/* calls TimerProc once every 60000 milliseconds */
SetTimer(NULL, 1, 60000, TimerProc);
Run Code Online (Sandbox Code Playgroud)


Rob*_*nes 5

您可能想要尝试POSIX间隔计时器,timer_create和timer_settime,因为它允许您直接指定回调函数而不使用信号.要让计时器只过一次(而不是一直重复):

timer_settime:定时器的重载值应设置为值的it_interval成员指定的值.当定时器配备非零it_interval时,会指定一个周期性(或重复)定时器.

以下是使用这些计时器的大量文档,以及kernel.org上的Linux程序员手册中的一个很好的示例:

timer_create - 创建一个POSIX每进程计时器