у меня в программе идёт передача нескольких файлов на фтп сервер одновременно (до 4). Я для каждого файла форкаю процесс в котором вызываю функцию отсылки файла. А сам ставлю обработчик на SIG_CHLD через signal().
Если отправляю где то больше 5 файлов (7 8 или 9).Не от всех процессов приходят сигналы о завершении функции и смерти потомка. Почему пропадают сигналы?
У стивенса подробно написано, почему. Сигналы в очередь на обработку не ставяться. В "UNIX:разработка сетевых прил" насоветовано пользоваться такой функциейvoid
sig_chld(int signo) // signal(SIGCHLD, sig_chld);
{
pid_t pid;
int stat;while( (pid = waitpid(-1, &stat, WNOHANG)) > 0)
;return;
}
>У стивенса подробно написано, почему. Сигналы в очередь на обработку не ставяться.
>В "UNIX:разработка сетевых прил" насоветовано пользоваться такой функцией
>
>void
>sig_chld(int signo) // signal(SIGCHLD, sig_chld);
>{
> pid_t pid;
> int stat;
>
> while( (pid = waitpid(-1, &stat, WNOHANG)) > 0)
> ;
>
> return;
>}спасибо попробую