Augmentation de la taille de la pile sous Linux avec setrlimit
la lecture des informations sur la façon d'augmenter la taille de la pile pour une application c++ compilé avec gnu, au moment de la compilation, j'ai compris qu'il peut être fait avec setrlimit au début du programme. Néanmoins, je ne pouvais pas trouver un exemple de réussite sur la façon de l'utiliser et dans quelle partie du programme de l'appliquer afin d'obtenir de 64M de la taille de la pile pour un programme c++, quelqu'un pourrait-il m'aider?
Thanlks
- En essayant de définir
rlimit_stack
après Pile Choc réhabilitations peut entraîner une défaillance ou de problèmes connexes. Voir aussi Red Hat Problème 1463241
Vous devez vous connecter pour publier un commentaire.
Normalement, vous définissez la taille de la pile dès le début, e,g, au début de
main()
, avant d'appeler les autres fonctions. Généralement, la logique serait:getrlimit
pour obtenir actuelles de la taille de la pilesetrlimit
pour augmenter la taille de la pile à la taille nécessaireEn C qui peut être codé quelque chose comme ceci:
#include
s si, par exemple,#include <sys/resource.h>
.rlimit_stack
après Pile Choc réhabilitations peut entraîner une défaillance ou de problèmes connexes. Voir aussi Red Hat Problème 1463241if (rl.rlim_cur!=RLIM_INFINITY && rl.rlim_cur < kStackSize)
pour nous assurer de ne pas entrer en conflit avec RLIM_INFINITY constante. Cependant, la norme dit que RLIM_INFINITY devrait être assez grande, mais si la valeur RLIM_INFINITY, alors pas besoin d'augmentation de la limite.error: ‘stderr’ was not declared in this scope
#include <stdio.h>
?Voir si le moteur d'exécution d'exécution maximum est de les limiter:
Noter que la taille de la pile, par défaut, est limitée à 10 mio. Ainsi, pour augmenter à 64 MiB:
Aller au-delà de la limite dans setrlimit (sur OSX ses seulement 64 mo par défaut), créer un nouveau thread à l'aide de pthreads avec une taille de pile de votre choix. Voici un C d'extrait de: