Написал небольшую програмку с использованеим сигналов. В 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 следующему дочернему процессу, тот тоже выводит символ и сигнализирует родительскому. Вот такой вот цикл.