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 :

Rôles des fonctions read et write


Sujet :

C

  1. #1
    Candidat au Club
    Inscrit en
    Mai 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 4
    Points : 4
    Points
    4
    Par défaut Rôles des fonctions read et write
    Bonjour,
    Serait il possible de m'expliquer ce que fait ces deux fonctions :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    n=read(fd,buffer,sizeof(buffer));
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    c=write(sock,buffer,n);
    Merci d'avance pour vos explications car je ne trouve rien de vraiment clair.

  2. #2
    Membre à l'essai
    Inscrit en
    Juillet 2008
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 22
    Points : 21
    Points
    21
    Par défaut
    salut
    i/o fonctions entrées-sorties de bas niveau
    elles permettent d'écrire et de lire dans un fichier

  3. #3
    Candidat au Club
    Inscrit en
    Mai 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    Ok merci. Donc la première lit dans le file descriptor fd c'est celà ?

  4. #4
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut
    read, ça dit ce que ça dit quand même ...
    Attention toutefois car open, creat, read,write et close sont des fonctions spécifiques aux systèmes de type UNIX. En C standard, on utilise fopen, fread/fwrite et fclose.

  5. #5
    Candidat au Club
    Inscrit en
    Mai 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    Ok merci. Désolé pour mon ignorance mais je n'étais pas sûr que çà lisait dans le file descriptor et que çà stockait dans le buffer en espérant que ce soit cela...

  6. #6
    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
    Lorsque vous voyez des fonctions de ce genre, vous pouvez tenter un:
    man le_nom_de_la_fonction
    Exemple:
    man read
    Vous pouvez le faire soit, dans une console linux, soit dans google
    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.

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    .
    Inscrit en
    Décembre 2009
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Fidji

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Décembre 2009
    Messages : 35
    Points : 38
    Points
    38
    Par défaut
    Citation Envoyé par Melem Voir le message
    read, ça dit ce que ça dit quand même ...
    Attention toutefois car open, creat, read,write et close sont des fonctions spécifiques aux systèmes de type UNIX. En C standard, on utilise fopen, fread/fwrite et fclose.
    Je ne vois pas pourquoi il faut forcement utiliser les fonctions fread etc... et non pas les appels system O_o, du moment qu'on verifie les valeurs de retour (dans les deux cas d'ailleurs).

  8. #8
    Membre émérite Avatar de SofEvans
    Homme Profil pro
    Développeur C
    Inscrit en
    Mars 2009
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 076
    Points : 2 328
    Points
    2 328
    Par défaut
    C'est pour permettre la portabilité.

    Si tu utilise read, il faudra s'assurer que ton programme ne quitte jamais UNIX, si tu utilise system(""); , alors ce sera windows only.

    Si read fait la meme chose que fread mais que fread permet la protabilité, pourquoi s'embeter ?

  9. #9
    Membre éclairé
    Avatar de Pouet_forever
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    671
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 671
    Points : 842
    Points
    842
    Par défaut
    Citation Envoyé par SofEvans Voir le message
    si tu utilise system(""); , alors ce sera windows only.
    Pourquoi ça ?
    Plus tu pédales moins fort, moins t'avances plus vite.

  10. #10
    Nouveau membre du Club
    Homme Profil pro
    .
    Inscrit en
    Décembre 2009
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Fidji

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Décembre 2009
    Messages : 35
    Points : 38
    Points
    38
    Par défaut
    Citation Envoyé par SofEvans Voir le message
    C'est pour permettre la portabilité.

    Si tu utilise read, il faudra s'assurer que ton programme ne quitte jamais UNIX, si tu utilise system(""); , alors ce sera windows only.

    Si read fait la meme chose que fread mais que fread permet la protabilité, pourquoi s'embeter ?
    A oui c'est vrai >< il y a windows, je l'oublie souvent ^^

  11. #11
    Membre émérite Avatar de SofEvans
    Homme Profil pro
    Développeur C
    Inscrit en
    Mars 2009
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 076
    Points : 2 328
    Points
    2 328
    Par défaut
    Citation Envoyé par Pouet_forever Voir le message
    Pourquoi ça ?
    Oups, system() existe effectivement sous UNIX.

    Sur le coup, je pensais a system("clr"); en fait

  12. #12
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut
    Citation Envoyé par SofEvans
    Si tu utilises read, il faudra s'assurer que ton programme ne quitte jamais UNIX, si tu utilise system(""); alors ce sera windows only.
    system est une fonction standard donc disponible dans tout environnement conforme à la norme. Windows possède cependant des fonctions assez semblables à celles d'UNIX en ce qui concerne la manipulation des fichiers :
    Code text : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    UNIX <-> Windows
    creat <-> CreateFile
    open <-> OpenFile
    read <-> ReadFile
    write <-> WriteFile
    close <-> CloseFile
    Citation Envoyé par SofEvans
    Sur le coup, je pensais a system("clr");
    C'est plutôt cls si c'est de la commande pour effacer l'écran que tu parles. Sous Linux effectivement c'est plutôt clear. Un bel exemple de la non portabilité que peut causer la fonction system.

  13. #13
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Melem Voir le message
    Un bel exemple de la non portabilité que peut causer la fonction system.
    bof..

    Il suffit d'avoir intégré que system appelle justement quelque chose qui dépend de l'OS..

    Mais, comme même sous le même OS, les programmes peuvent être à des endroits différents, ou non définis dans le path, il est toujours judicieux de stocker les commandes / programmes utilsés dans les appels à system sous forme de fichiers de config..


    Exemple ici :

    Fichier Config

    Fichier source :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    ...
    fopen(ConfigFile....);
    ...
    p = strchr ( Ligne, ":" );
    strcpy ( ClearCommand, (p+1) ) ;
    ...
    sprintf ( Command, "%s", ClearCommand )
    s = system ( Command );
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

Discussions similaires

  1. gérer l'acces à des fichiers : read only / write ..
    Par ryoussef19 dans le forum Visual C++
    Réponses: 21
    Dernier message: 09/08/2007, 15h39
  2. Liste des fonctions
    Par Mookie dans le forum C
    Réponses: 2
    Dernier message: 22/09/2003, 16h42
  3. Des fonctions OGL pour les images de format usuel ?
    Par jamal24 dans le forum OpenGL
    Réponses: 3
    Dernier message: 31/05/2003, 21h59
  4. Appel à des fonctions incluses dans des DLL
    Par Greybird dans le forum Langage
    Réponses: 3
    Dernier message: 26/05/2003, 13h33
  5. Implémentation des fonctions mathématiques
    Par mat.M dans le forum Mathématiques
    Réponses: 9
    Dernier message: 17/06/2002, 16h19

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