Нужен таймер, программный, чтобы допустим каждые 500 миллисекунд, основная программа прерывалась (как по прерыванию) исполнялся определенный код, и снова продолжалась основная программа ...
Ну в общем, тики нужно сформировать, ...
> Нужен таймер, программный, чтобы допустим каждые 500 миллисекунд, основная программа прерывалась
> (как по прерыванию) исполнялся определенный код, и снова продолжалась основная программа
> ...
>> Нужен таймер, программный, чтобы допустим каждые 500 миллисекунд, основная программа прерывалась
>> (как по прерыванию) исполнялся определенный код, и снова продолжалась основная программа
>> ...
> http://docs.libuv.org/en/v1.x/timer.htmlНу или еще вот так: man setitimer
#include <signal.h>
#include <stdio.h>
#include <string.h>
#include <sys/time.h>
void timer_handler (int signum)
{
static int count = 0;
printf ("timer expired %d times\n", ++count);
}
int main ()
{
struct sigaction sa;
struct itimerval timer;
/* Install timer_handler as the signal handler for SIGVTALRM. */
memset (&sa, 0, sizeof (sa));
sa.sa_handler = &timer_handler;
sigaction (SIGVTALRM, &sa, NULL);
/* Configure the timer to expire after 250 msec... */
timer.it_value.tv_sec = 0;
timer.it_value.tv_usec = 250000;
/* ... and every 250 msec after that. */
timer.it_interval.tv_sec = 0;
timer.it_interval.tv_usec = 250000;
/* Start a virtual timer. It counts down whenever this process is
executing. */
setitimer (ITIMER_VIRTUAL, &timer, NULL);
/* Do busy work. */
while (1);
}
Вот вот это лучше, поразбираться только нужно, senK
Вот это Вот очень не плохо, это то что нужно, правда еще проверит нужно может не работает ?
Вечером сейчас некогда ....
Если заработает, то ВЕщЬ !
Не запускается под MinGW вот ошибки компилятора ....||=== Build: Debug in Timer250 (compiler: GNU GCC Compiler) ===|
C:\Users\redd\Desktop\CURSES\Timer250\main.c||In function 'main':|
C:\Users\redd\Desktop\CURSES\Timer250\main.c|14|error: storage size of 'sa' isn't known|
C:\Users\redd\Desktop\CURSES\Timer250\main.c|15|error: storage size of 'timer' isn't known|
C:\Users\redd\Desktop\CURSES\Timer250\main.c|20|warning: implicit declaration of function 'sigaction' [-Wimplicit-function-declaration]|
C:\Users\redd\Desktop\CURSES\Timer250\main.c|20|error: 'SIGVTALRM' undeclared (first use in this function)|
C:\Users\redd\Desktop\CURSES\Timer250\main.c|20|note: each undeclared identifier is reported only once for each function it appears in|
C:\Users\redd\Desktop\CURSES\Timer250\main.c|30|warning: implicit declaration of function 'setitimer' [-Wimplicit-function-declaration]|
C:\Users\redd\Desktop\CURSES\Timer250\main.c|30|error: 'ITIMER_VIRTUAL' undeclared (first use in this function)|
C:\Users\redd\Desktop\CURSES\Timer250\main.c|15|warning: unused variable 'timer' [-Wunused-variable]|
C:\Users\redd\Desktop\CURSES\Timer250\main.c|14|warning: unused variable 'sa' [-Wunused-variable]|
||=== Build failed: 4 error(s), 4 warning(s) (0 minute(s), 3 second(s)) ===|
Я правильно понял что этот блок выполняется про отработке таймера ????void timer_handler (int signum)
{
static int count = 0;
printf ("timer expired %d times\n", ++count);
}
> Я правильно понял что этот блок выполняется про отработке таймера ????
> void timer_handler (int signum)
> {
> static int count = 0;
> printf ("timer expired %d times\n", ++count);
> }Верно.
Ок,