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

POSIX C Discussion :

popen() renvoi EMFILE, connaitre le nombre de fichiers ouverts par mon processus ?


Sujet :

POSIX C

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 54
    Points : 37
    Points
    37
    Par défaut popen() renvoi EMFILE, connaitre le nombre de fichiers ouverts par mon processus ?
    Bonjour,

    J'ai un programme Unix dans lequel j'utilise popen() pour lancer diverses commandes. Malheureusement en bout d'un certains temps les popen() renvoi tous EMFILE --> "Trop de fichiers ouvert dans le processus courant".

    Je dois avoir un soucis quelque part je m'en doute... mais j'aimerais savoir si pour "debugger" mon appli il existait une fonction me renvoyant le nombre de fichiers ouverts courant que je puisse suivre l'évolution et trouver où se trouve mon problème ?

    Merci

  2. #2
    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 connaitre les limites en tout cas c'est ulimit ou rlimit.

  3. #3
    Membre émérite Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Points : 2 280
    Points
    2 280
    Par défaut
    Tu en lances combien des commandes comme ça?
    "The quieter you become, the more you are able to hear"
    "Plus vous êtes silencieux, plus vous êtes capable d'entendre"

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 54
    Points : 37
    Points
    37
    Par défaut
    Citation Envoyé par valefor Voir le message
    Pour connaitre les limites en tout cas c'est ulimit ou rlimit.
    Je me sers de la constante FOPEN_MAX c'est pas équivalent ?

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 54
    Points : 37
    Points
    37
    Par défaut
    Citation Envoyé par nicolas.sitbon Voir le message
    Tu en lances combien des commandes comme ça?
    Ben normalement pas beaucoup çà depend de l'utilisateur mais moins de 10 çà me parait vraiment raisonnable.
    En fait je n'ai pas directement le problème, c'est chez le client que je l'ai c'est pourquoi j'aimerais bien tracer cette information (nb de fichiers ouverts) pour avoir une idée d'où vient le problème car là je ne vois pas du tout et c'est assez grave...

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 54
    Points : 37
    Points
    37
    Par défaut
    En fait je n'arrive même pas à déterminer la valeur maximum de fichiers ouverts autorisée:

    - Dans le Man de popen c'est marqué :
    EMFILE
    There are currently FOPEN_MAX or STREAM_MAX streams
    open in the calling process.
    Et quand je fais un printf("%d",FOPEN_MAX) çà me sort 16.

    - Avec la suggestion de valefor et ce lien http://man.developpez.com/man2/getrlimit.2.php j'ai tenté de me servir de getrlimit:

    Je fais un getrlimit (RLIMIT_NOFILE,&rlim) qui me renvoit 1024 pour la limite souple et stricte !

    Comprends rien là

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 54
    Points : 37
    Points
    37
    Par défaut
    Personne pour une idée ?

    Sinon en shell il n'y àapas une commande qui me permettrait de voir le nombre de fichiers ouverts par mon processus ?

  8. #8
    Membre émérite Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Points : 2 280
    Points
    2 280
    Par défaut
    la commande lsof (list open file) doit le faire.
    "The quieter you become, the more you are able to hear"
    "Plus vous êtes silencieux, plus vous êtes capable d'entendre"

  9. #9
    Membre éclairé
    Avatar de D[r]eadLock
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    504
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 504
    Points : 750
    Points
    750
    Par défaut
    Citation Envoyé par LeBigornot Voir le message
    En fait je n'ai pas directement le problème, c'est chez le client que je l'ai c'est pourquoi j'aimerais bien tracer cette information (nb de fichiers ouverts) pour avoir une idée d'où vient le problème car là je ne vois pas du tout et c'est assez grave...
    Tu peux peut-être utiliser strace (avec -f pour suivre les fils) voir les open()/close() de fait (voire les socket()). Question bête, tu fais bien des pclose() ?

Discussions similaires

  1. Réponses: 4
    Dernier message: 20/04/2011, 11h11
  2. Réponses: 13
    Dernier message: 22/08/2010, 19h49
  3. Réponses: 2
    Dernier message: 05/01/2007, 12h27
  4. Réponses: 31
    Dernier message: 30/09/2006, 22h08
  5. Connaitre le nombre de fichiers dans un repertoire
    Par gids01 dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 26/04/2006, 19h19

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