Народ, столкнулся с такой проблемой: писал программу для embedded системы и вылезла непонятная штука, когда я запускаю эту программу на рабочей машине (на которой она и разрабатывается) то все работает отлично, а на маленькой процесс, а точнее его основной поток, не хочет реагировать на сигнал от таймера (SIGVALRM). После этого я написал тестовую програмку:
#include <stdio.h>
#include <signal.h>
#include <sys/time.h>
struct itimerval timer;
void timer_handler (int);
void* thread_func ( void* );
int main()
{
pthread_t thread_id;
sigset_t sigmask;
sigemptyset(&sigmask);
sigaddset(&sigmask, SIGALRM);
sigprocmask(SIG_BLOCK,&sigmask,0);
struct sigaction sa;
memset (&sa, 0, sizeof(sa));
sa.sa_handler = &timer_handler;
sigaction ( SIGALRM, &sa, NULL );
pthread_create (&thread_id, NULL, &thread_func, NULL);
pthread_sigmask(SIG_UNBLOCK,&sigmask,0);
pthread_join ( thread_id, NULL);
return 0;
}
void* thread_func (void* unused)
{
struct itimerval timer;
timer.it_value.tv_sec = 0;
timer.it_value.tv_usec = 50000;
timer.it_interval.tv_sec = 0;
timer.it_interval.tv_usec = 50000;
setitimer ( ITIMER_REAL, &timer, NULL );
sleep(1);
}
void timer_handler (int signum)
{
printf("test\n");
}
По идеи должна выводиться надпись 'test', но на маленькой машинке этого не происходит! Я даже версии ядер одинаковые поставил с похожими конфигами (2.6.11). Подскажите в чем тут может быть дело?
Ответ на:
комментарий
от bizon_art
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Таймеры в Си (2015)
- Форум Переход от LinuxThreads к NTPL (2004)
- Форум Обработка сигналов в линуксе (2017)
- Форум Возвращаясь: Семафоры в Red Hat 9.0 (2004)
- Форум Помогите разобраться с сигналами (2003)
- Форум POSIX таймеры (2011)
- Форум Обработчик таймера для переключения контекста (2016)
- Форум Случайные числа. (2007)
- Форум [c++]Завершение процесса (2011)
- Форум функция с ограничением по времени исполнения (2006)