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 :

Errno : usage et portabilité


Sujet :

C

  1. #1
    Expert confirmé
    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 : 39
    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
    Par défaut Errno : usage et portabilité
    Ce n'est pas une bonne habitude de tester errno. Pour faire du code portable, il vaut mieux appeler perror (affiche la description de l'erreur) ou strerror (récupère la description de l'erreur), respectivement déclarées dans stdio.h et string.h. (perror utilise strerror qui utilise errno ...)

  2. #2
    Rédacteur
    Avatar de Vincent Rogier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 373
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 373
    Par défaut
    Citation Envoyé par Melem Voir le message
    Ce n'est pas une bonne habitude de tester errno. Pour faire du code portable, il vaut mieux appeler perror (affiche la description de l'erreur) ou strerror (récupère la description de l'erreur), respectivement déclarées dans stdio.h et string.h. (perror utilise strerror qui utilise errno ...)
    ??

    strerror() et perror() renvoient une chaine de caractères descriptive de l'erreur dont le code est détenu par errno...

    Ces chaines de caractères sont dépendantes de l'implémentation... donc leur interprétation non portable...

    Alors que pour errno, bien que des valeurs spécifiques soient dépendante des implémentations, une série de valeurs sont communément fournies et font partie des normes POSIX.

    De plus si on veut juste tester un certain code erreur, seul errno le permet.

    Alors dire que utiliser errno est moins portable que perror() /strerror(), ça m'en bouche un coin......
    Vincent Rogier.

    Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog

    Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique !

    OCILIB (C Driver for Oracle)

    Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle

  3. #3
    Expert confirmé
    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 : 39
    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
    Par défaut
    strerror() et perror() renvoient une chaine de caractères descriptive de l'erreur dont le code est détenu par errno...
    C'est ce que j'ai dit, mais au moins ça nous évite de tester la valeur de errno. Donc si on veut du code 100% conforme à la norme (pas conforme à 99.99 %), il faut se limiter à l'usage de perror ou strerror (et là encore je préfère strerror ...)

    Ces chaines de caractères sont dépendantes de l'implémentation... donc leur interprétation non portable...
    Le programmeur n'a pas besoin de savoir ce que va afficher cette chaîne, c'est l'utilisateur qui en a besoin.

    De plus si on veut juste tester un certain code erreur, seul errno le permet.
    Justement, parce que c'est pas portable.

  4. #4
    Expert confirmé

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    euh !!!!!

    en général c'est pour pouvoir traiter les cas, pas pour afficher la chaine..

    Donc l'utilisateur s'en fout, mais le programmeur non...


    donc errno oui, perror non

  5. #5
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    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 395
    Par défaut
    D'accord avec vicenzo et souviron34.
    Quand le programme doit traiter l'erreur, perror() et strerror() ne servent à rien.
    Seule errno peut être traitée, en la comparant à des constantes dont le nom est standardisé.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  6. #6
    Rédacteur
    Avatar de Vincent Rogier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 373
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 373
    Par défaut
    Citation Envoyé par Melem Voir le message
    C'est ce que j'ai dit, mais au moins ça nous évite de tester la valeur de errno. Donc si on veut du code 100% conforme à la norme (pas conforme à 99.99 %), il faut se limiter à l'usage de perror ou strerror (et là encore je préfère strerror ...)

    Le programmeur n'a pas besoin de savoir ce que va afficher cette chaîne, c'est l'utilisateur qui en a besoin.

    Justement, parce que c'est pas portable.
    Encore un fois, les valeurs affectées par la libc à errno sont définies et portables sur les systèmes POSIX

    De plus, une logique applicative ne se contente pas d'afficher une message d'erreur en cas de problème !!!!!!!!!!!

    Une logique applicative efficace consiste à analyser l'erreur grace à errno et décider de la suite du process en fonction du code erreur.


    Le programmeur s'en fout du message d'erreur. De plus, un message d'erreur en anglais fourni par le compilo n'est pas vraiment parlant pour un utilisateur lambda.

    Une application qui repose sur les messages de perror() ne peut être professionnelle et efficace....
    Vincent Rogier.

    Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog

    Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique !

    OCILIB (C Driver for Oracle)

    Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle

  7. #7
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Par défaut
    Citation Envoyé par souviron34 Voir le message
    donc errno oui, perror non
    Pourquoi être aussi affirmatif ?

    Il s'agit de mécanismes certes liés mais distincts et dont l'utilisation n'est pas la même :
    * s'il s'agit de tester la raison de l'erreur pour effectuer le traitement adéquate, il faut utiliser errno (avec toutes les conditions d'utilisation que cela sous entends)
    * s'il s'agit d'afficher le motif, on utilise perror().
    * s'il s'agit de logguer dans un fichier l'erreur (ou un autre traitement du même type, il faut voir du côté de strerror().

    En sachant que leur utilisation n'est pas exclusive.

  8. #8
    Expert confirmé

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par gl Voir le message
    Pourquoi être aussi affirmatif ?

    Il s'agit de mécanismes certes liés mais distincts et dont l'utilisation n'est pas la même :
    * s'il s'agit de tester la raison de l'erreur pour effectuer le traitement adéquate, il faut utiliser errno (avec toutes les conditions d'utilisation que cela sous entends)
    * s'il s'agit d'afficher le motif, on utilise perror().
    * s'il s'agit de logguer dans un fichier l'erreur (ou un autre traitement du même type, il faut voir du côté de strerror().

    En sachant que leur utilisation n'est pas exclusive.
    je parlais en réponse au post précédent...

    Si l'on veut traiter les cas d'échec, une seule méthode : errno.

    Ce qui était bien ce qui était demandé en réponse au message du PO.

  9. #9
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Par défaut
    Citation Envoyé par souviron34 Voir le message
    Si l'on veut traiter les cas d'échec, une seule méthode : errno.
    De mon point de vue, tracer l'erreur est deja une forme de traitement de l'erreur

  10. #10
    Expert confirmé
    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 : 39
    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
    Par défaut
    En réponse à vicenzo, Médinoc et souviron34 : je crois qu'on va devoir un peu reprendre depuis le début :
    Citation Envoyé par vicenzo
    Il peut y avoir plusieurs raison (la plus courante est celle mentionnées par ram_0000).

    Pour savoir qu'elle est l'erreur, (si rename() retourne -1), examines la valeur de errno.
    Donc ici (sur ce thread), on veut apparemment déboguer. La méthode la plus rapide (et totalement portable) pour y arriver c'est d'afficher la description de l'erreur avec perror.

    En ce qui concerne l'utilisation de errno en général :
    Citation Envoyé par vicenzo
    Encore un fois, les valeurs affectées par la libc à errno sont définies et portables sur les systèmes POSIX
    Je n'ai jamais affirmé le contraire. Mais tous les systèmes ne sont pas POSIX.
    Citation Envoyé par Melem
    Donc si on veut du code 100% conforme à la norme (pas conforme à 99.99 %), il faut se limiter à l'usage de perror ou strerror (et là encore je préfère strerror ...)
    Le respect de la norme implique contraintes, moins de liberté. Tester errno avec des valeurs qui ne sont pas définis par la norme est un non respect de la norme.

    Citation Envoyé par vicenzo
    De plus, une logique applicative ne se contente pas d'afficher une message d'erreur en cas de problème !!!!!!!!!!!

    Une logique applicative efficace consiste à analyser l'erreur grace à errno et décider de la suite du process en fonction du code erreur.
    J'ai parlé ici uniquement de la norme, pas d'autre chose. On a GetLastError, WSAGetLastError, etc. sous Windows par exemple. Rien à voir avec errno. Ou bien fais des programmes utilisant les sockets sous Windows et teste les erreurs avec errno, ce sera déjà moins drôle ...

  11. #11
    Rédacteur
    Avatar de Vincent Rogier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 373
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 373
    Par défaut
    Citation Envoyé par Melem Voir le message
    En ce qui concerne l'utilisation de errno en général :
    Je n'ai jamais affirmé le contraire. Mais tous les systèmes ne sont pas POSIX.
    Sur ce coup, la plupart des OS sont conformes POSIX.1, même MS Windows !

    Citation Envoyé par Melem Voir le message
    le respect de la norme implique contraintes, moins de liberté. Tester errno avec des valeurs qui ne sont pas définis par la norme est un non respect de la norme.
    La norme ne précise quasiment rien sur les valeurs de errno ! Donc selon toi l'utilisation de errno est hors normes ! Ben la je ne suis pas d'accord. L'existence de errno est définie par la norme donc son utilisation est 'conforme' à la norme.

    Pour résumer le seul moyen portable de gérer des erreurs en C, en respectant la norme et en étant portable, afin de réagir à ces erreurs est errno !

    Mais peux être que tu connais un autre moyen ??

    Errno est le seul moyen pour un traitement de décider la marche à suivre en cas d'erreur.

    L'affichage du texte de l'erreur ne sert à rien à un processus

    Et enfin, tous les systèmes POSIX ont la même base de valeurs pour errno...
    Vincent Rogier.

    Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog

    Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique !

    OCILIB (C Driver for Oracle)

    Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle

  12. #12
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    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 395
    Par défaut
    La plupart des systèmes respectent le standard POSIX pour ce qui est d'errno.
    De plus, les erreurs EDOM, EILSEQ et ERANGE sont standard C (bien qu'ici, elles ne soient pas en jeu).

    Enfin, on n'affiche évidemment pas les valeurs numériques pour errno: Pour l'affichage, on utilise perror() ou strerror() (la seconde n'étant ni réentrante, ni garantie thread-safe)...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  13. #13
    Expert confirmé
    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 : 39
    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
    Par défaut
    Citation Envoyé par vicenzo
    Sur ce coup, la plupart des OS sont conformes POSIX.1, même MS Windows !
    Windows support une partie de POSIX.1. fork par exemple n'est pas implémentée, pour les sockets, les numéros d'erreurs ne sont pas récupérables dans errno mais via WSAGetLastError, etc.

    Citation Envoyé par Médinoc
    De plus, les erreurs EDOM, EILSEQ et ERANGE sont standard C (bien qu'ici, elles ne soient pas en jeu).
    Oui, ce sont les seules valeurs de errno spécifiées par la norme, d'autres valeurs sont possibles mais doivent toujours commencer par un E majuscule et sont évidemment "implementation defined". POSIX a défini des codes d'erreurs supplémentaires. Quelques uns de ces codes existent sous Windows.

  14. #14
    Expert confirmé

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Melem Voir le message
    Windows support une partie de POSIX.1. fork par exemple n'est pas implémentée, pour les sockets, les numéros d'erreurs ne sont pas récupérables dans errno mais via WSAGetLastError, etc.

    Oui, ce sont les seules valeurs de errno spécifiées par la norme, d'autres valeurs sont possibles mais doivent toujours commencer par un E majuscule et sont évidemment "implementation defined". POSIX a défini des codes d'erreurs supplémentaires. Quelques uns de ces codes existent sous Windows.

    mais qui a dit de tester par rapport à la valeur numérique ?????????????????????

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if (errno == EINVAL)
    est portable, correspond à la norme, et sert justement à faire ce qu'on veut...

    Melem, tu t'enfonces là...

    Personne n'a suggéré de faire


    En tous cas, conseiller d'utiliser des perror et autres est une absurdité du point de vue de la programmation, à moins que tu ne fasses que des petites applis qui s'arrêtent à la moindre erreur.

    Mais ce n'est pas une bonne pratique à enseigner pour faire un bon code
    (la plupart des codes professionnels ne devant PAS s'arrêter à la moindre erreur)

  15. #15
    Rédacteur
    Avatar de Vincent Rogier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 373
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 373
    Par défaut
    Citation Envoyé par souviron34 Voir le message

    mais qui a dit de tester par rapport à la valeur numérique ?????????????????????

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if (errno == EINVAL)
    est portable, correspond à la norme, et sert justement à faire ce qu'on veut...

    Melem, tu t'enfonces là...

    Personne n'a suggéré de faire

    En tous cas, conseiller d'utiliser des perror et autres est une absurdité du point de vue de la programmation, à moins que tu ne fasses que des petites applis qui s'arrêtent à la moindre erreur.

    Mais ce n'est pas une bonne pratique à enseigner pour faire un bon code
    (la plupart des codes professionnels ne devant PAS s'arrêter à la moindre erreur)
    +1
    Vincent Rogier.

    Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog

    Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique !

    OCILIB (C Driver for Oracle)

    Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle

  16. #16
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    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 395
    Par défaut
    je plussoie également.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  17. #17
    Membre Expert Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Par défaut
    Citation Envoyé par Melem Voir le message
    pour les sockets, les numéros d'erreurs ne sont pas récupérables dans errno mais via WSAGetLastError, etc.
    Autant que je me souvienne, ça n'est pas limité au socket mais à toutes les APIs, dont le code d'erreur peut être retrouvé grâce à GetLastError().
    Au passage WSAGetLastError = GetLastError.
    WSAGetLastError n'est qu'une relique du temps du 16bits et n'est la que pour compatibilité, d'ailleurs si on jète un coup d'oeil au code source de WSAGetLastError on trouve :

  18. #18
    Expert confirmé
    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 : 39
    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
    Par défaut
    Citation Envoyé par souviron34

    mais qui a dit de tester par rapport à la valeur numérique ?????????????????????

    est portable, correspond à la norme, et sert justement à faire ce qu'on veut...
    La norme ne parle pas de EINVAL, peux-tu me dire pourquoi c'est portable (ISO, pas POSIX) ?

    Citation Envoyé par souviron34
    En tous cas, conseiller d'utiliser des perror et autres est une absurdité du point de vue de la programmation, à moins que tu ne fasses que des petites applis qui s'arrêtent à la moindre erreur.

    Mais ce n'est pas une bonne pratique à enseigner pour faire un bon code
    (la plupart des codes professionnels ne devant PAS s'arrêter à la moindre erreur)
    Et là aussi je répète, je ne parle ici que du point de vue NORME. Ne parlons pas d'autre chose, ça va rendre cette discussion inutilement encore plus longue. Personne ici n'a dit que ceux qui ont introduit les codes d'erreurs sont fous, que les codes d'erreurs çà ne sert à rien.

  19. #19
    Expert confirmé
    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 : 39
    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
    Par défaut
    Citation Envoyé par nicolas.sitbon Voir le message
    Autant que je me souvienne, ça n'est pas limité au socket mais à toutes les APIs, dont le code d'erreur peut être retrouvé grâce à GetLastError().
    Au passage WSAGetLastError = GetLastError.
    WSAGetLastError n'est qu'une relique du temps du 16bits et n'est la que pour compatibilité, d'ailleurs si on jète un coup d'oeil au code source de WSAGetLastError on trouve :
    Le but était de montrer que Windows ne supporte pas totalement POSIX.1. D'après la norme POSIX, les codes d'erreurs liées aux fonctions de l'interface des sockets doivent être placés dans errno, ce qui n'est pas le cas sous Windows ...

  20. #20
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    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 395
    Par défaut
    En effet, les sockets Windows ne mettent pas à jour errno.
    Mais je te rassure tout de suite, perror() ne marche pas non plus...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

Discussions similaires

  1. portabilité d'une interface
    Par marou dans le forum JBuilder
    Réponses: 4
    Dernier message: 21/03/2003, 08h53
  2. Réponses: 11
    Dernier message: 17/03/2003, 10h56
  3. portabilité et BDD
    Par delire8 dans le forum C++Builder
    Réponses: 7
    Dernier message: 04/07/2002, 10h59

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