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

Linux Discussion :

questions concernant open/close


Sujet :

Linux

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Inscrit en
    Septembre 2006
    Messages
    414
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 414
    Par défaut questions concernant open/close
    salut !

    voila aujourd'hui j'ai lancé une baterie de tests sur un module que j'ai ecris.
    parmis ces tests voici celui qui me fais poser des questions:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    #include <sys/ioctl.h>
    #include <sys/types.h>
    #include <sys/stat.h>
    #include <fcntl.h>
    #include "MTV7109Accel.h"
    #include <stdio.h>
     
     
    int fd[2000];
    int main(void){
     
      int ret;
      short axis[3];
      int i;
     
      for (i=0;i<2000;i++){
        fd[i] = open("/dev/MTV7109Accel",O_RDWR);
        if(fd[i]<0){
          printf("an't open for i=%d, aborting...\n",i);
          break;
        }
      }
     
      for (i--;i>=0;i--){
        printf("closing for i=%d\n",i);
        close(fd[i]);
      }
     
      printf("done\n");
    }
    je remarque qu'a partir de i=1021, je ne peut plus ouvrir le fichier (au sein du meme processus)...
    donc je voulais savoir quel etait la taille de la table des descripteurs de fichiers ? (1021 ?)

    sinon autre question, dans les file_operations de mon module je n'ai pas defini la fonction open, c'est donc celle par default qui est appelée...mais est ce que celle ci alloue des donnée en memoire ?
    parceque si je ne ferme jamais les fichiers ouverts, ca ne semble pas poser de probleme au driver ou au noyau...
    je sais qu'il faut fermer un fichier ouvert, mais je ne peut pas controler ce que fais l'utilisateur...donc je voulais savoir si je devai ajouter un compteur d'utilisation pour verifier tout ca.

    mais la table des descripteurs etant nuique au sein d'un processus, je me demande ausi si l'OS ne va pas tout seul fermer les fichiers ouverts ?

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 833
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 833
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par kamouminator Voir le message
    je remarque qu'a partir de i=1021, je ne peut plus ouvrir le fichier (au sein du meme processus)...
    donc je voulais savoir quel etait la taille de la table des descripteurs de fichiers ? (1021 ?)
    Moi je dirais plutôt 1024. Déjà c'est une parfaite puissance de 2 (si on doit coder un nombre limité de descripteurs sur une variable, autant ne pas perdre de bits) et en plus ça tombe pile poil avec les 3 fichiers ouverts par défaut (stdin, stdout et stderr).

    Citation Envoyé par kamouminator Voir le message
    sinon autre question, dans les file_operations de mon module je n'ai pas defini la fonction open, c'est donc celle par default qui est appelée...mais est ce que celle ci alloue des donnée en memoire ?
    Juste un descripteur numérique

    Citation Envoyé par kamouminator Voir le message
    parceque si je ne ferme jamais les fichiers ouverts, ca ne semble pas poser de probleme au driver ou au noyau...
    Quand ton programme (ton processus) se termine, les fichiers ouverts sont automatiquement refermés
    Citation Envoyé par kamouminator Voir le message
    je sais qu'il faut fermer un fichier ouvert, mais je ne peut pas controler ce que fais l'utilisateur...
    L'utilisateur utilise ton programme et ça, tu le contrôles !!! Tu peux détecter si l'utilisateur interromp le programme et agir en conséquence !!!

    Citation Envoyé par kamouminator Voir le message
    donc je voulais savoir si je devai ajouter un compteur d'utilisation pour verifier tout ca.
    C'est ta boutique, c'est toi qui voit...

    Citation Envoyé par kamouminator Voir le message
    mais la table des descripteurs etant nuique au sein d'un processus, je me demande ausi si l'OS ne va pas tout seul fermer les fichiers ouverts ?
    Gagné !!! Mais malgré ça, il est de bon ton de gérer proprement tous ses fichiers ouvert et de ne pas s'en remettre à un comportement par défaut ce qui n'est pas portable.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Membre expérimenté
    Inscrit en
    Septembre 2006
    Messages
    414
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 414
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Moi je dirais plutôt 1024. Déjà c'est une parfaite puissance de 2 (si on doit coder un nombre limité de descripteurs sur une variable, autant ne pas perdre de bits) et en plus ça tombe pile poil avec les 3 fichiers ouverts par défaut (stdin, stdout et stderr).
    effectivement, je n'y avais pas pensé...

    Merci pour tes lumières !

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

Discussions similaires

  1. [Servlet + Class] question concernant plusieurs connections
    Par ShinJava dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 29/11/2004, 16h39
  2. Réponses: 5
    Dernier message: 17/11/2004, 21h29
  3. Réponses: 7
    Dernier message: 10/09/2004, 14h28
  4. [Indy] Questions concernant l'envoi de mail
    Par delphicrous dans le forum Web & réseau
    Réponses: 3
    Dernier message: 24/06/2004, 15h06
  5. Question concernant l'API "WaitforSingleObject
    Par Drooxy dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 29/03/2003, 07h26

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