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

Sergey Vlasov =?iso-8859-1?q?vsu_=CE=C1_altlinux=2Eru?=
Вс Мар 21 14:48:02 MSK 2004


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().
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип     : application/pgp-signature
Размер  : 189 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url     : <http://lists.altlinux.org/pipermail/devel/attachments/20040321/cf093437/attachment-0001.bin>


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