LINUX.ORG.RU

помогите разобраться


0

0

есть обработчик:
//-----------------------------------------------
    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)как еще можно перезапускать процессы?, а то в голову пока не 
приходит ничего кроме обработчика.
Зарание спасибо!
 
anonymous

Народ, ну помогите)))

anonymous
()

> 4 процесса читают данные из файла, когда они достигают EOF они завершаются, и в обработчике стартует опять 4 процесса.

Использовать pipe'ы: 1) родитель запускает новый процесс (Д); 2) Д пишет в pipe свой ид-р; 3) Д читает из pipe параметры и выполняет; 4) Д достигает EOF и goto 2.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.