{Spam?} Re: [devel] Просьба потестировать

Michael Pozhidaev =?iso-8859-1?q?msp_=CE=C1_altlinux=2Eru?=
Вс Мар 21 16:13:59 MSK 2004


Sergey Vlasov пишет:
> On Sun, Mar 21, 2004 at 03:03:10PM +0600, Michael Pozhidaev wrote:
> [skip]
> 
>>void stop()
>>{
>>	pid_t p;
>>	killpg(mp, SIGKILL);
>>	while((p = waitpid(-1*mp, NULL, WNOHANG))>0);
>>}
> 
> 
> Это не сработает.  После вызова kill/killpg процесс не завершается
> немедленно (даже при передаче SIGKILL); задержка определяется
> планировщиком и в общем случае непредсказуема.  Нужно либо убирать
> WNOHANG, либо ожидать завершения любого процесса (тогда зомби будут
> удаляться в следующем цикле).
> 
> Просто игнорировать SIGCHLD тут нельзя - если запущенный процесс
> завершится раньше вызова stop(), его pid может быть использован
> повторно, и тогда сигнал пойдёт совсем не туда, куда ожидалось.  Можно
> написать обработчик SIGCHLD, сохраняющий информацию о завершении
> запущенных процессов, но тогда в start() и stop() потребуется
> аккуратное обращение с sigprocmask().
> 
Понятно. Большое спасибо. Уже просто попробовал убрать WNOHANG, и 
программа сделала 1100 порождений процесса, дальше я не стал 
дожидаться. Теперь буду знать.
-- 
Best wishes. Michael Pozhidaev. E-mail: msp на altlinux.ru.
Tomsk state university.
Computer science department. (http://www.inf.tsu.ru)




Подробная информация о списке рассылки Devel