{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