есть обработчик: //----------------------------------------------- static struct sigaction action; action.sa_flags = SA_NOCLDWAIT | SA_SIGINFO; sigemptyset(&action.sa_mask); action.sa_sigaction = &sig_chield_handler; if((sigaction(SIGCHLD,&action,NULL)) == -1) { perror("can't set handler"); exit(1); } //------------------------------------------------ void sig_chield_handler(int signal,siginfo_t *info,void *p) { pid_t pid; int status; if(signal != SIGCHLD) return; else fprintf(stdout,"end process PID:%d\n",info->si_pid); if(k == 4) k = 0; chield_start(k); k++; } 1)Логично ли перезапускать поражденные процессы в обработчике? т.е. 4 процесса читают данные из файла, когда они достигают EOF они завершаются, и в обработчике стартует опять 4 процесса. 2)как еще можно перезапускать процессы?, а то в голову пока не приходит ничего кроме обработчика. Зарание спасибо!
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум signal (2005)
- Форум Продолжим про исключения!! (2007)
- Форум POSIX таймеры (2011)
- Форум Android native обработка сигналов (2016)
- Форум C, почему теряются сигналы? (2005)
- Форум обработать сигнал sigchld при прерывании функции poll (2017)
- Форум [c++]Завершение процесса (2011)
- Форум Linux Directory Notification (2002)
- Форум fork + popen. Залипание на wait при SIGCHLD (2019)
- Форум Про сигналы и исключения (2013)