есть обработчик:
//-----------------------------------------------
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)