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 :

read() est-il standard ?


Sujet :

C

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 4
    Points : 1
    Points
    1
    Par défaut read() est-il standard ?
    RTFM ( Read The Fucking Manual )
    Comme la radio RFM on rajoute un T et ça donne:
    READ THE FUCKING MANUAL si vous me croyez pas allez sur wikipedia.
    maintenant ceux qui connaissent pas ( je cite les modérateurs surement pour les conneries qu'ils disent du genre la fonction read pas dispo dans la lib C ... )
    Qui est quand même une des bases du langage c.

    Alors pour ceux qui veulent apprendre le C je dis pas que ce site est nul au contraire il est très bien mais pour les modérateurs qui disent que certaines fonctions ce trouvant dans la libc de base... Enfin voila revoyez vos bases cela vous fera pas de mal et pour les nouveaux continuez comme ça vous verrez c'est cool le C moi perso c'est ma drogue la programmation ( après les femmes faut pas oublier car quand on est sur son pc mais on a une vie a coté ^^ )

    Enfin voila tout ça pour dire au modo de réapprendre le C!!!

  2. #2
    Membre expérimenté
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Points : 1 729
    Points
    1 729
    Par défaut
    Andouille, read() ne fait pas partie du C standard, c'est une fonction POSIX.
    C'est toi qui devrait lire le manuel, au paragraphe Conformité
    http://man.developpez.com/man2/read.2.php

  3. #3
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 382
    Points : 41 593
    Points
    41 593
    Par défaut
    Eh bien GFY (Go F--- Yourself) car la fonction read() ne fait effectivement pas partie de la norme C.
    Donc, il existe des lib C qui tout en respectant le standard, n'ont pas cette fonction.

    La seule fonction standard C pour la lecture par bloc, c'est fread().

    Donc, va réapprendre les normes et ne dis pas aux modos ce qu'ils ont à faire.

    Edit: par Gruik, qui contrairement à moi n'a pas perdu de temps à être agressif.

  4. #4
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    http://fr.wikipedia.org/wiki/POSIX
    merci de ton information maintenant va lire ce message fonction systeme depuis 1988 donc si t'as tout de plus vieux je comprend sinon revois tout

  5. #5
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 382
    Points : 41 593
    Points
    41 593
    Par défaut
    Tu l'as dit toi-même: POSIX
    P-O-S-I-X.
    Pas Standard C.

    Windows par exemple, n'est pas POSIX.

  6. #6
    Membre habitué Avatar de emprex
    Homme Profil pro
    auto-entrepreneur
    Inscrit en
    Octobre 2007
    Messages
    219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : auto-entrepreneur
    Secteur : Services à domicile

    Informations forums :
    Inscription : Octobre 2007
    Messages : 219
    Points : 199
    Points
    199
    Par défaut
    Il me semble que Wiki n'est pas une source fiable.

  7. #7
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    je suis d'accord avec d'ou mon ancien sujet qui a été modifié RTFM on te dis read tu vois ça marche pas la personne précise pas son os il regarde le man sinon il précise son os et la c'est clair personnelement j'ai xp cigwin etc... read fonctionne très bien il suffit juste de commencer à prog avec ce qu'il faut. Sinon faut installer unix pour bien programmer mais ça pour ceux qui débute c'est toujours pas top.

    Pour ce qui est de wikipédia c'est peu être pas une source sur mais en général ce qui est dedans est vérifié avant d'y être mi.

  8. #8
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 382
    Points : 41 593
    Points
    41 593
    Par défaut
    Ici, on est plutôt à cheval sur le standard C, et on évite d'utiliser POSIX si on a une alternative standard JUSTE LÀ SOUS NOTRE NEZ.

    Pour information au sujet de Windows, les derniers SDK de Microsoft respectent toujours le standard C90 (bien qu'ils incitent à ne pas le suivre et qu'ils défèquent sur C99) mais s'éloignent de POSIX: Notamment, utiliser read() te donnera un warning.
    Sans compter que la fonction open() de DOS ou Windows, bien qu'elle possède le même nom que la fonction open() POSIX, ne s'y conforme pas.

    Donc, Windows n'est pas POSIX, et c'est une des raisons dominantes pour lesquelles on colle au standard autant que faire se peut. La fonction non-standard read() ne sert à rien tant qu'on a fread() sous la main.

  9. #9
    Membre habitué Avatar de emprex
    Homme Profil pro
    auto-entrepreneur
    Inscrit en
    Octobre 2007
    Messages
    219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : auto-entrepreneur
    Secteur : Services à domicile

    Informations forums :
    Inscription : Octobre 2007
    Messages : 219
    Points : 199
    Points
    199
    Par défaut
    Je tiens dans mes mains le k&r2.
    Au chapitre 8.2 il semblerai que la fonction read soit dans le fichier "appelsys.h" c'est un prototype et non un standard

  10. #10
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    emprex tu connais rtfm google man et c'est réglé c'est plus complet qu'un bouquin
    moi je te dis juste si tu prog sous windows télécharger des programmes comme cygwin et tu programme sous windows comme si c'était POSIX enfin bon windows c'est sympa mais c'est pourri pour programmer ça a rien et médinoc si tu relis ce que j'avais écris au dessus j'ai précisé que si on te dis read et que tu vois que ça marche pas rtfm la tu vois fread et c'est réglé c'est pour ça ( rtfm ou man read mais bon tu dois connaitre )

  11. #11
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 382
    Points : 41 593
    Points
    41 593
    Par défaut
    Citation Envoyé par paillepailles Voir le message
    emprex tu connais rtfm google man et c'est réglé c'est plus complet qu'un bouquin
    Mais le bouquin est plus accessible, et le K&R 2 est la norme. D'ailleurs, je doute que le K&R2 soit disponible gratos sur le Web... (son errata l'est, par contre).
    moi je te dis juste si tu prog sous windows télécharger des programmes comme cygwin et tu programme sous windows comme si c'était POSIX
    Donc, tu télécharges un truc supplémentaire qui ne fait pas partie du SDK de Windows. CQFD.
    enfin bon windows c'est sympa mais c'est pourri pour programmer ça a rien
    Perdu. Ça a pas mal de choses que POSIX n'a pas, notamment une API de fenêtrage qui est garantie être présente sur tous les Windows dans rien à installer, une API de cryptographie, une API réseau avec des extensions sympa, une API de multithreading native...
    et médinoc si tu relis ce que j'avais écris au dessus j'ai précisé que si on te dis read et que tu vois que ça marche pas rtfm la tu vois fread et c'est réglé c'est pour ça ( rtfm ou man read mais bon tu dois connaitre )
    Donc, tu essaies de me dire qu'il faut utiliser read(), parce que si ça ne marche pas, l'aide te dira la bonne fonction... Un peu non ?

  12. #12
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par emprex Voir le message
    Je tiens dans mes mains le k&r2.
    Au chapitre 8.2 il semblerai que la fonction read soit dans le fichier "appelsys.h" c'est un prototype et non un standard
    Relis le tire du chapitre : extension Unix. Ce n'est pas le standard C.

    @paillepailles

    N'insiste pas, tu te ridiculises en public. Mais si ça peut te faire plaisir, chacun ses petites manies.

    Voila la norme :

    http://www.open-std.org/jtc1/sc22/wg...docs/n1124.pdf

    si tu trouves read(), fait moi signe.

  13. #13
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    The nice thing about standards is that there are so many to choose from.

    Il faut donc savoir de quelle norme on parle. Quand il s'agit du C, c'est ISO-9099. Et la il n'y a pas de fonction read.

    read() est une fonction Unix. Et la norme de Unix, c'est IEEE-1003, alias POSIX. On y trouve pas mal de choses qui n'ont pas de rapport avec le C (par exemple une description du shell).

  14. #14
    Membre Expert

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Points : 5 723
    Points
    5 723
    Par défaut
    Citation Envoyé par Jean-Marc.Bourguet Voir le message
    read() est une fonction Unix.
    Oui mais bon tu peux l'utiliser sous windows quand même. Tu veux dire qu'elle est d'origine Unix ?

  15. #15
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Citation Envoyé par hegros Voir le message
    Oui mais bon tu peux l'utiliser sous windows quand même. Tu veux dire qu'elle est d'origine Unix ?
    Vraisemblablement mais il n'est pas tout a fait impossible qu'il s'agit d'une evolution independante. Je connais assez mal windows, mais je vois au moins 3 raisons differentes pour lesquelles ce serait disponible:
    - par chance: le nom est assez commun pour arriver a utiliser le meme nom pour la meme chose et les arguments necessaires sont relativement naturel aussi (je viens de verifier l'interruption 21, fonction 3Fh du DOS a la meme interface si on exclu le probleme de l'ordre des arguments).
    - par compatibilite. Il y a des programmes C qui utilise cette fonction, on fournit un systeme pour faire du C, fournissons la aussi (la norme date de 1989 et les premiers compilateurs C hors Unix d'avant et de plus personne ne se limite a la norme quand faire un peu plus permet de satisfaire les clients a peu de frais sans inconvénients majeurs )
    - par compatibilite: on utilise une couche posix (cygwin, uwin, interix pour citer celles que je connais) et donc on a naturellement ce qui est unix.

  16. #16
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par Jean-Marc.Bourguet Voir le message
    - par compatibilite: on utilise une couche posix (cygwin, uwin, interix pour citer celles que je connais) et donc on a naturellement ce qui est unix.
    MinGW supporte aussi une partie de POSIX.1 dont read() / write(). Mais sous Windows, la fonction de l'API officielle est ReadFile() / WriteFile() ... Medinoc saura mien en parler, parce que moi aussi, Windows, c'est ... de loin...

  17. #17
    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 est une fonction (un appel système) UNIX. Dans le livre de K&R, cette fonction apparaît dans la partie "interface avec le système UNIX". Dans les cours de C actuels elle apparaît (si elle apparaît) dans un chapitre du genre "les E/S de bas niveau sous UNIX", et bien sûr dans le texte de la norme : elle n'apparaît pas!

    Le langage C est en quelque sorte un "assembleur indépendant de la machine". Le langage est concis, il n'y a pas de fonctions intégrées (c'est-à-dire prédéfinies), chacun doit donc à priori développer ses propres fonctions ou utiliser des fonctions déjà existantes (les APIs de son système par exemple).

    Afin de faciliter la tâche aux programmeurs (en particulier pour l'écriture de programmes portables), on a composé un bouquet de fonctions qui doit être livré avec tout compilateur C digne de ce nom. read n'en fait pas partie (mais rien n'empêche un implémenteur particulier de l'inclure dans son bouquet ...). D'ailleurs comme nous le savons le C doit ses origines au système UNIX, c'est pourquoi de nombreuses fonctions de la bibliothèque standard sont en fait des fonctions originaires d'UNIX.

Discussions similaires

  1. Police de caractère qui n'est pas standard
    Par mikadom dans le forum Mise en page CSS
    Réponses: 6
    Dernier message: 28/01/2009, 17h27
  2. UTF-8 est-il standard ?
    Par JM-R dans le forum Windows
    Réponses: 8
    Dernier message: 18/12/2008, 21h04
  3. Pourquoi le Wait Time per Read est elevé ?
    Par lanbok dans le forum SAP
    Réponses: 4
    Dernier message: 21/01/2008, 16h52
  4. Bug eclipse ? Local Variable is never read est à ignore
    Par jlong dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 18/09/2007, 17h34
  5. Trouver si une réponse à un read est numérique
    Par ggnore dans le forum Linux
    Réponses: 2
    Dernier message: 15/10/2004, 18h22

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