From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Message-ID: <405D9517.4040502@altlinux.ru> Date: Sun, 21 Mar 2004 19:13:59 +0600 From: Michael Pozhidaev User-Agent: Mozilla/5.0 (X11; U; Linux i686; ru-RU; rv:1.4) Gecko/20030612 X-Accept-Language: ru-ru, ru MIME-Version: 1.0 To: ALT Devel discussion list Subject: Re: {Spam?} Re: [devel] =?KOI8-R?Q?=F0=D2=CF=D3=D8=C2=C1_=D0=CF?= =?KOI8-R?Q?=D4=C5=D3=D4=C9=D2=CF=D7=C1=D4=D8?= References: <405D423A.1070309@altlinux.ru> <20040321082426.GA2031@wrars-comp.wrarsdomain> <405D5A4E.6090906@altlinux.ru> <20040321114802.GA3306@sirius.home> In-Reply-To: <20040321114802.GA3306@sirius.home> X-Enigmail-Version: 0.76.0.0 X-Enigmail-Supports: pgp-inline, pgp-mime Content-Type: text/plain; charset=KOI8-R; format=flowed Content-Transfer-Encoding: 8bit X-BeenThere: devel@altlinux.ru X-Mailman-Version: 2.1.4 Precedence: list Reply-To: ALT Devel discussion list List-Id: ALT Devel discussion list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 21 Mar 2004 13:15:13 -0000 Archived-At: List-Archive: List-Post: 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)