[devel] Просьба потестировать

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


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)




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