Разница между поведением 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, эффект не будет.

Interesting Posts

Разрешения «проблема» с использованием SCP для копирования в корневую папку из локального

Как явным образом и безопасно принудительно использовать встроенную команду в bash

Мне нужно создать модуль для новой программы или просто использовать существующую?

Убить процесс, порожденный ssh, когда ssh умирает

Знайте, когда адрес памяти выровнен или не выровнен

Изменение приватной конфигурации в зависимости от времени

Запретить закрытие окна / окна при завершении команды – tmux

Автозаполнение ZSH

Что произойдет, если я использую vi для больших файлов?

Подавление стандартного вывода в vim-latex-suite

Сколько времени занимает установка Linux Mint?

Как я могу надолго монтировать отдельный раздел в качестве папки в отдельном домашнем разделе?

Настройка 105-клавишной геометрии клавиатуры под Xorg

Вызовите скрипт для другого скрипта, но не выходите из родителя, если ребенок вызывает exit

Новые настройки маршрутизации без перезагрузки сети в CentOS 7?

Linux и Unix - лучшая ОС в мире.