The OpenNET Project / Index page

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

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Signal в Ubuntu 6x-9x"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [ Отслеживать ]

"Signal в Ubuntu 6x-9x"  +/
Сообщение от Hromonin (ok) on 22-Окт-09, 19:26 
Написал небольшую програмку с использованеим сигналов. В 6х версии все отлично работает, но в другой(более новой, предположительно 9х) возникает проблема, после первой обработки сигнала, оброботчик "отсоединяется"... И вместо оброботки на экран выплывает сообщение аля "Установленный пользователем сигнал 2" и вылет.
Обработчик устанавливаю так:
void sign1_handler(int i )
{
printf("signsign");
blablabla
exit(EXIT_SUCCESS);
}

    struct sigaction sa;
    sigset_t newset;
    sigemptyset(&newset);
    sigaddset(&newset,SIGUSR1);
    sa.sa_handler=sign1_handler;
    sigprocmask(SIG_BLOCK,&newset,0);
    sigaction(SIGUSR2,&sa,0);

С чем это может быть связанно не представляю, к этой "более новой версии" доступа в ближайшие пару дней не предвидится. Так что навсякий случай опишу как используются сигналы(всяко ведь бывает):

Родительский процесс следит за выполнением дочерних. Каждый дочерний процесс с помощью ф-ии sig_wait ожидает сигнала SIGUSR1, после чего выводит символ в консоль и посылает сигнал SIGUSR2 в родительский. После чего оброботчик sign1_handler в родительском перехватывает это сигнал и посылает сигнал SIGUSR1 следующему дочернему процессу, тот тоже выводит символ и сигнализирует родительскому. Вот такой вот цикл.

Высказать мнение | Ответить | Правка | Cообщить модератору

Оглавление

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


1. "Signal в Ubuntu 6x-9x"  +/
Сообщение от jd (??) on 23-Окт-09, 04:45 
Не вполне понял, что вы пытаетесь сделать, но вы в конце обработчика вызываете exit и процесс (хоть родительский, хоть дочерний), разумеется, завершается. И что здесь не так?
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Signal в Ubuntu 6x-9x"  +/
Сообщение от Hromonin (ok) on 25-Окт-09, 13:47 
>Не вполне понял, что вы пытаетесь сделать, но вы в конце обработчика
>вызываете exit и процесс (хоть родительский, хоть дочерний), разумеется, завершается. И
>что здесь не так?

Чуть чуть не то написал) В конце нету эксита. Понять в чем проблема не могу...

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Signal в Ubuntu 6x-9x"  +/
Сообщение от const86 (ok) on 27-Окт-09, 17:01 
>    struct sigaction sa;
>    sigset_t newset;
>    sigemptyset(&newset);
>    sigaddset(&newset,SIGUSR1);
>    sa.sa_handler=sign1_handler;
>    sigprocmask(SIG_BLOCK,&newset,0);

Распечатай здесь sa.sa_flags. Нет ли в нём SA_RESETHAND?
>    sigaction(SIGUSR2,&sa,0);

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

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

Индекс форумов | Темы | Пред. тема | След. тема




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

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