IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

borner son programme a s'executer dans une certaine quantité de mémoire


Sujet :

C++

  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 354
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 354
    Points : 1 419
    Points
    1 419
    Par défaut borner son programme a s'executer dans une certaine quantité de mémoire
    Salut,

    J'aimerais savoir si c'est possible (et comment) d'executer son programme dans une certaine quantité de mémoire, par exemple pour faire des tests sur un servers sans que tout s'ecroule si il y a un bug ?

    Merci

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    258
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 258
    Points : 307
    Points
    307
    Par défaut
    Dans le langage C++, rien ne permet ceci. Si ton serveur est sous Linux, quelque chose de ce genre va marcher :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    struct rlimit limit;
    getrlimit(RLIMIT_AS, &limit);
    limit.rlim_cur = 800*1024*1024; // 800MB
    setrlimit(RLIMIT_AS, &limit);

  3. #3
    Membre éclairé Avatar de valefor
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    711
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 711
    Points : 790
    Points
    790
    Par défaut
    Moi j'utiliserai des outils de niveau systeme.

    Il y a moyen d'isoler des process dans des "prisons" (je crois que ça s'apelle comme cela). Et comme tu dis c'est notament utilisé sur les serveurs pour cloisoner les applis. Donc par exemple il y a le fameux chroot sous linux.

    Faire cela dans l'appli ne me semble pas la bonne approche sauf si tu as un besoin particulier dont tu ne nous a pas encore parlé.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    258
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 258
    Points : 307
    Points
    307
    Par défaut
    Citation Envoyé par valefor
    Il y a moyen d'isoler des process dans des "prisons" (je crois que ça s'apelle comme cela). Et comme tu dis c'est notament utilisé sur les serveurs pour cloisoner les applis. Donc par exemple il y a le fameux chroot sous linux.
    Attention : chroot ne permet pas (à ma connaissance) de limiter la mémoire utilisée par un processus. Par contre, on peut bidouiller un truc facile avec setrlimit puisque, selon la doc, fork et execve préservent les limites. Mais puisque c'est un programme de test, je vois pas de problème à coller ça dans l'appli, quitte à l'encadrer par des #define TEST_MEMOIRE pour être sur de ne pas compiler cette portion quand le code sortira de sa phase de test.

  5. #5
    Membre éclairé Avatar de valefor
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    711
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 711
    Points : 790
    Points
    790
    Par défaut
    Pour le chroot, il ne permet pas de limiter les ressources, mais ulimit en ligne de commande le permet.

    Ok, c'est vrai que c'est discutable de ne pas le mettre dans l'appli.

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 354
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 354
    Points : 1 419
    Points
    1 419
    Par défaut
    Merci, je pense que
    #include <ulimit.h>
    repond a mes besoins...

    c'est fou ce qu'on peut regler ... comme le pourcentage d'utilisation du cpu !

    mais existerait-il un outil qui lance un autre programme en lui limitant les resources (principalement la memoire)
    ulimit ne le permet pas a priori...

    [EDIT 1] ha si il le peut, mais comment ca s'utilise au juste ? [/EDIT 1]
    [EDIT 2] ok il limite sur le shell courant, bah ca correspond quand meme, je vais essayer, merci a tous [/EDIT 2]

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Programmer des évènements asynchrones dans une classe ?
    Par Pierre8r dans le forum Langages de programmation
    Réponses: 4
    Dernier message: 31/10/2008, 14h17
  2. programmer un champ combo dans une table
    Par cool dans le forum WinDev
    Réponses: 2
    Dernier message: 16/07/2007, 12h54
  3. Réponses: 2
    Dernier message: 15/09/2006, 13h07
  4. Creer un programme et l executer sur une carte
    Par Djo00 dans le forum Administration système
    Réponses: 6
    Dernier message: 21/07/2006, 17h13
  5. Lancer un programme c depuis java dans une console
    Par moise44 dans le forum Général Java
    Réponses: 5
    Dernier message: 04/04/2006, 21h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo