Есть приложение на С++, которое использует стороннюю библиотеку.
Специфика работы библиотеки такова, что в процессе работы может понадобиться большое количество потоков (300-500). При этом библиотека не устанавливает размер стека при создании потока (pthread).
Проблема в том, что в системе, на которой будет работать мое приложение ulimit -s равен 8192, поэтому процесс не может создать более 255 потоков.
Попытки использовать setrlimit в main() бесполезны, т.к. NPTL смотрит RLIMIT_STACK до передачи управления в main при инициализации программы.
Сейчас решаю проблему запуском скрипта (допустим, run.sh) из двух строчек:
ulimit -s 1024
запуск приложения
Может это как-то повлиять на лимиты для других процессов? Есть ли способ программно изменить размер стека по умолчанию для моей программы или какое-нибудь другое решение, более изящное, чем run.sh?