From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Message-ID: <405D6B14.6080209@altlinux.ru> Date: Sun, 21 Mar 2004 16:14:44 +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: [devel] =?KOI8-R?Q?=F0=D2=CF=D3=D8=C2=C1_=D0=CF=D4=C5=D3=D4?= =?KOI8-R?Q?=C9=D2=CF=D7=C1=D4=D8?= References: <405D423A.1070309@altlinux.ru> <20040321082426.GA2031@wrars-comp.wrarsdomain> <405D5A4E.6090906@altlinux.ru> <20040321094631.GA9610@wrars-comp.wrarsdomain> In-Reply-To: <20040321094631.GA9610@wrars-comp.wrarsdomain> 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 10:16:27 -0000 Archived-At: List-Archive: List-Post: Andrey Rahmatullin пишет: > On Sun, Mar 21, 2004 at 03:03:10PM +0600, Michael Pozhidaev wrote: >> Программа ждёт в качестве первого параметра запуска какой-нибудь >> wav-файл, длительность которого больше хотя бы 1 секунды. На >> консоль программа выводит количество успешных запуском процесса >> для воспроизведения звука. У меня таких запусков не больше 120. > $ ulimit -u > 128 > $ ./1 auth.wav > [...] > 94 > 95 > /usr/bin/play: fork: Resource temporarily unavailable > 96 > /usr/bin/play: fork: Resource temporarily unavailable > $ ulimit -u 256 > $ ulimit -u > 256 > $ ./1 auth.wav > [...] > 221 > 222 > /usr/bin/play: fork: Resource temporarily unavailable > 223 > /usr/bin/play: fork: Resource temporarily unavailable > Но ведь процессы-то не одновременно работают? Не одновременно. Каждую секунду порождается процесс, который будет корнем процессной группы, и процесс для вызова play. Перед тем, как выполнить очередной раз эту операцию, вызывается killpg(pid, SIGKILL), который убивает полностью процессную группу от предыдущего шага. Таким образом происходит последовательное порождение и завершение процессов и ничего оставаться не должно, я думаю. Почему эту операцию можно выполнить только установленное количество раз, я понять не могу. > man setrlimit: > RLIMIT_NPROC > The maximum number of processes that can be created for the real > user ID of the calling process. Upon encountering this limit, > fork() fails with the error EAGAIN. > > Так созданных или созданных одновременно? Похоже, что созданных вообще за время работы программы в главном процессе. Но какой смысл накладывать такие ограничения? -- Best wishes. Michael Pozhidaev. E-mail: msp@altlinux.ru. Tomsk state university. Computer science department. (http://www.inf.tsu.ru)