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 :

Quel appel système à utiliser autre que 'open' pour ouvrir des fichier de taille importante?


Sujet :

POSIX C

  1. #1
    Membre averti Avatar de dariyoosh
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 236
    Points : 334
    Points
    334
    Par défaut Quel appel système à utiliser autre que 'open' pour ouvrir des fichier de taille importante?
    Bonjour à tous,



    Je suis en train d'écrire un programme en C. Dans ce programme je dois créer un
    descripteur de fichier afin d'ouvrir un fichier de taille importante (environ 15 GO).
    Voici le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    /*
        argv[1] est donc le chemin d'accès vers le fichier en question
    */
    inputFileDescriptor = open(argv[1], O_RDONLY);
    if (inputFileDescriptor < 0)
    {
        fprintf(stderr, "Error: Could not open the input file\n");
        fprintf(stderr, "%s\n", strerror(errno));
        return 1;
    }
    Maintenant le problème c'est que le fichier est trop grand pour l'appel système open
    et je reçois le message d'erreur suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Error: Could not open the input file
    Value too large for defined data type
    Je voudrais savoir, est-ce qu'il existe un autre appel système permettant d'ouvrir
    des fichier très volumineux?


    Merci d'avance,
    Dariyoosh
    Cordialement,
    Dariyoosh

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 860
    Points : 219 062
    Points
    219 062
    Billets dans le blog
    120
    Par défaut
    Je pense que vous devriez vous intéressé à 'fopen64'.
    Le problème, c'est que mon linux ne veut pas me donner le man de cette commande, donc j'ai un doute.
    Mais je crois que c'est le seul moyen pour faire ce que vous demander
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Membre averti Avatar de dariyoosh
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 236
    Points : 334
    Points
    334
    Par défaut
    Citation Envoyé par LittleWhite Voir le message
    Je pense que vous devriez vous intéressé à 'fopen64'.
    Le problème, c'est que mon linux ne veut pas me donner le man de cette commande, donc j'ai un doute.
    Mais je crois que c'est le seul moyen pour faire ce que vous demander

    Bonjour,


    Je vous remercie pour votre attention à mon problème. Je vais essayer
    la fonction 'fopen64' dont vous parlez. Depuis hier, j'ai continué à chercher
    sur google et j'ai trouvé une page qui explique comment il faut faire:

    http://coding.debuntu.org/c-handling...-2g-standard-c

    J'ai testé avec l'option de la ligne de commande gcc
    -D_FILE_OFFSET_BITS=64 et ça a marché sans problème. Par contre le
    problème c'est que le programme sur lequel je travaille sera bientôt mis
    sur une plateforme AIX. Sachant que AIX est 100% conforme à la norme
    POSIX dont la dernière version est disponible sur internet (au cas vous
    n'avez pas déjà le lien)
    http://www.opengroup.org/onlinepubs/...99/nframe.html

    Cela veut dire qu'en utilisant les options de GCC (extensions linux) ou
    fopen64, l'application ne serait plus portable.

    Un ami, m'a proposé une autre solution assez intéressante, il m'a dit
    que je peux carrément installer un système Linux 64 bit où le type
    de donné off_t peut avoir des valeurs plus grandes qu'un système 32 bit.

    Je vais aussi tenter cette méthode.

    En tous cas, je vous remercie de votre aide et de votre attention à mon
    problème.


    Cordialement,
    Dariyoosh
    Cordialement,
    Dariyoosh

Discussions similaires

  1. Réponses: 2
    Dernier message: 27/05/2015, 19h23
  2. Réponses: 3
    Dernier message: 20/03/2008, 12h02
  3. utiliser ls et xargs pour déplacer des fichiers
    Par walrus_55 dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 06/04/2007, 10h22
  4. Problème pour ouvrir des fichiers .exe et .jar via une page html
    Par coyaote dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 15/02/2007, 12h28
  5. [vbscript] [msgbox] boutons pour ouvrir des fichiers
    Par D-ude dans le forum VBScript
    Réponses: 8
    Dernier message: 12/12/2006, 16h49

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