[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