Intereting Posts
Как я могу обновить MySQL в Debian с помощью apt-get? Ctrl-Y, emacs стилизованный яркий текст не работает, когда пользователь переключается Как использовать VPN с групповой защитой и аппаратным токеном? Как настроить консервативный метод синхронизации / ведения журналов для флэш / USB-накопителей? Как предоставить sudo доступ пользователям abc, def, ghi на пользователя jkl Multi-Touch жесты на Thinkpad T61 Что такое область применения Kali Linux? Не удается установить JStock на Ubuntu (zorin 7) Shell – работа с несколькими файлами истории команд Какие параметры `ServerAliveInterval` и` ClientAliveInterval` в sshd_config точно выполняются? Vim: Создание XML-текста «довольно» Debian / Grub2: Перемещение корневого раздела на новый диск? Видимые части окон, не перерисованные в некоторых приложениях Почему я не могу сделать ls * .txt в подоболочке? переменная только для чтения TMOUT – обходной путь для автоматического отключения выхода из оболочки, когда нет активности

Разница между поведением setrlimit и лимитного стека

Я вижу разницу в поведении при установке размера стека из оболочки и изнутри моей c-программы. Проблема в том, что у меня есть функция, которая имеет большой набор локальных переменных (большие массивы).

Если я сделаю следующее

limit stack 256000 

моя программа c продолжается без сбоев. Но одно и то же значение из-за сбоев при вызове функции

Первые несколько строк main, перед вызовом функции, следующие:

 struct rlimit lim = {256000*1024, 256000*1024}; int x=setrlimit(RLIMIT_STACK, &lim); if(x!=0) { printf("Error in setrlimit); } 

Нет ошибки, выданной setrlimit.

Добавляя к этому, похоже, что это специфично для определенных платформ (SuSE 11) и не происходит во всех случаях.

Как я могу гарантировать, что размер стека, увеличенный моей программой, эффективен? Другое дело, что даже если я наложу огромные значения в setrlimit, эффект не будет.