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 :

Différence open et fopen


Sujet :

C

  1. #1
    Membre éclairé Avatar de SteelBox
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    446
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2002
    Messages : 446
    Par défaut Différence open et fopen
    Bonjour, j'aimerais savoir qu'elle est la différence entre les fonctions open et fopen en général ? (je sais qu'on peut les appliquer toutes les 2 à un fichier)

  2. #2
    Membre émérite
    Profil pro
    Eleveur de cornichons
    Inscrit en
    Juin 2002
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Eleveur de cornichons
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 074
    Par défaut
    Je crois qu'il n'yen a pas vraiment. Ca donne le meme résultat mais open renvoie un entier (-1 en cas d'erreur) alors que fopen renvoie le ptr sur le flux.
    Donc open s'utilise ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    int fd ;
    fd=open(nom,flag,perm);
    Et je sais pas si c'est du,a qch, mais je vois tjs open utilisé avec une interface UNIX et non Windows...
    De plus, pour utiliser open, il faut le header <fcntl.h> sous Unix (pour les constantes flags)
    Je laisse les pro completer ou infirmer.

    Nas'

  3. #3
    Membre éprouvé Avatar de Metal Tom
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    119
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 119
    Par défaut
    En fait avec open tu ouvres un descipteur de fichier (un simple int), alors qu'avec fopen tu ouvres un flux (FILE *) qui contient lui même un descripteur de fichiers. D'ailleurs fopen appelle open si je ne m'abuse. Le fait de faire la séquence open-fdopen permet de savoir exactement comment on a ouvert le fichier (r,w,a,r+,w+,a+,...). Par contre avec fopen on choirit juste lecture, écriture ou lecture-écriture.

  4. #4
    dclink
    Invité(e)
    Par défaut
    Je pense que fopen est plus portable que open non??

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 3
    Par défaut
    Je pense que fopen est plus portable que open non??
    Oui car fopen est une fonction standard du langage C, alors que open est une fonction de plus bas niveau (appel système) propre au système Linux/Unix. Et donc oui fopen fait appel à open.

  6. #6
    Membre éclairé Avatar de SteelBox
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    446
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2002
    Messages : 446
    Par défaut
    C bien ce qu'il me sebmlait que open était une primitive sous unix mais elle est bien implanté sous windows, il doit l'émuler, non ?

  7. #7
    Expert éminent

    Avatar de Anomaly
    Homme Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 380
    Billets dans le blog
    1
    Par défaut
    fopen -> standard ANSI C, supporté sur toutes les plates-formes
    open -> standard POSIX, supporté sous Unix, DOS, Windows
    _open, _rtl_open, _dos_open -> fonctions DOS, disponible aussi sous Windows
    CreateFile -> fonction Win32

    Dans tous les cas, il vaut mieux préférer la fonction la plus portable. Quelques différences néanmoins :
    - fopen travaille sur des flux à tampons
    - open travaille sans tampon, mais dispose d'un sélecteur texte/binaire sous DOS (pour compatibilité avec un code Unix), par défaut sur texte
    - les autres fonctions sont déjà en mode binaire

    Je te recommande d'utiliser fopen en premier lieu, ou open sinon. Open est plus adapté pour des traitements de fichiers plus proche du système. Les autres fonctions sont à éviter car elles n'apportent aucun avantage significatif et elles suppriment toute portabilité sur un environnement Unix.

    Côté portabilité, ces deux fonctions sont équivalentes car elles tournent sur tous les systèmes actuels et même plus anciens : tous les Unix (Linux, *BSD, Solaris, ...), DOS, Win16, Win32, MAC OS X). J'ignore pour le Mac OS antérieur à la version 10.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 11/09/2014, 12h47
  2. Différence open source/propriétaire dans un réseau social d'entreprise
    Par me784 dans le forum Autres Solutions d'entreprise
    Réponses: 0
    Dernier message: 07/11/2011, 13h52
  3. différences entre SQLquery.open active ExecSQL
    Par Ice-tea dans le forum Bases de données
    Réponses: 4
    Dernier message: 13/06/2006, 16h13
  4. fopen -> différences entres les types d'ouvertur
    Par Patrick PETIT dans le forum C
    Réponses: 10
    Dernier message: 01/06/2003, 18h19
  5. Réponses: 5
    Dernier message: 11/12/2002, 12h31

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