The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]



"С таймер ..."
Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (C/C++)
Изначальное сообщение [ Отслеживать ]

"С таймер ..."  +/
Сообщение от redd email on 16-Апр-18, 06:45 
Нужен таймер, программный, чтобы допустим каждые 500 миллисекунд, основная программа прерывалась (как по прерыванию) исполнялся определенный код, и снова продолжалась основная программа ...

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "С таймер ..."  +/
Сообщение от redd email on 16-Апр-18, 06:51 
Ну в общем, тики нужно сформировать, ...
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "С таймер ..."  +1 +/
Сообщение от Аноним (??) on 16-Апр-18, 06:58 
> Нужен таймер, программный, чтобы допустим каждые 500 миллисекунд, основная программа прерывалась
> (как по прерыванию) исполнялся определенный код, и снова продолжалась основная программа
> ...

http://docs.libuv.org/en/v1.x/timer.html

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

3. "С таймер ..."  +1 +/
Сообщение от Аноним (??) on 16-Апр-18, 08:49 
>> Нужен таймер, программный, чтобы допустим каждые 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);                                                                    
}

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

4. "С таймер ..."  +/
Сообщение от redd email on 16-Апр-18, 15:49 
Вот вот это лучше, поразбираться только нужно, senK
Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

5. "С таймер ..."  +/
Сообщение от redd email on 16-Апр-18, 15:53 
Вот это Вот очень не плохо, это то что нужно, правда еще проверит нужно может не работает ?
Вечером сейчас некогда ....
Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

6. "С таймер ..."  +/
Сообщение от redd email on 16-Апр-18, 15:56 
Если заработает, то ВЕщЬ !
Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

7. "С таймер ..."  +/
Сообщение от redd email on 16-Апр-18, 18:37 
Не запускается под 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)) ===|

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

8. "С таймер ..."  +/
Сообщение от redd email on 16-Апр-18, 18:53 
Я правильно понял что этот блок выполняется про отработке таймера ????

void timer_handler (int signum)                                                    
{                                                                                  
    static int count = 0;                                                          
    printf ("timer expired %d times\n", ++count);                                  
}      

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

9. "С таймер ..."  +/
Сообщение от Аноним (??) on 17-Апр-18, 09:36 
> Я правильно понял что этот блок выполняется про отработке таймера ????
> void timer_handler (int signum)
> {
>     static int count = 0;
>     printf ("timer expired %d times\n", ++count);
> }

Верно.

Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

10. "С таймер ..."  +/
Сообщение от redd email on 17-Апр-18, 11:03 
Ок,
Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру