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 :

Gestion des erreurs


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Webmaster
    Inscrit en
    Mai 2011
    Messages
    258
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2011
    Messages : 258
    Par défaut Gestion des erreurs
    Bonjour ,

    Je tourne sous Buster avec un Pi 4

    Je débugge un programme en C procédural qui pose problème à l'exécution.

    Pour ce faire, je gère les erreurs des fonctions de la manière suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fprintf(stderr, "message: %s\n", strerror(errno));
    Bien sur , je teste errno avant de sortir le message.

    Je voudrai redirectionner la sortie stderr dans un fichier , car je lance ce programme depuis une console en ssh ( mode texte).

    Comment faire ?

  2. #2
    Membre émérite
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Juillet 2020
    Messages
    352
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Juillet 2020
    Messages : 352
    Par défaut
    Hello,
    en bash :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    command 2>filename
    ça redirige stderr vers le fichier filename …

  3. #3
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 832
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 832
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par frederic13870 Voir le message
    Bien sur , je teste errno avant de sortir le message.
    Qu'entends-tu par "je teste errno" ? Tu t'attends à avoir quelle valeur ???
    On ne teste jamais errno, ça ne sert à rien. C'est l'instruction système que l'on teste, et si elle renvoie une erreur alors on sait que errno a été mis à jour pour correspondre à l'erreur.
    Exemple
    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    FILE *fp=fopen(nomFic);
    if (fp == NULL) fprintf(stderr, "Impossible d'ouvrir %s - %s\n", nomFichier, strerror(errno));
     
    char *pt=malloc(n);
    if (pt == NULL) fprintf(stderr, "Impossible d'allouer %lu - %s\n", n, strerror(errno));

    Citation Envoyé par frederic13870 Voir le message
    Je voudrai redirectionner la sortie stderr dans un fichier , car je lance ce programme depuis une console en ssh ( mode texte).
    redirectionner !!! Tu ne voudrais pas "rediriger" plutôt ??? WhiteCrow t'a répondu. Je rajoute que ça ça n'a rien à voir avec du C. La redirection c'est une action qui se fait dans le shell.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  4. #4
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 493
    Billets dans le blog
    1
    Par défaut
    Si, il y a des cas où on teste errno, comme montré dans la documentation : https://man7.org/linux/man-pages/man3/errno.3.html

    For some system calls and library functions (e.g.,
    getpriority(2)), -1 is a valid return on success. In such cases,
    a successful return can be distinguished from an error return by
    setting errno to zero before the call, and then, if the call
    returns a status that indicates that an error may have occurred,
    checking to see if errno has a nonzero value.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if (somecall() == -1) {
       int errsv = errno;
       printf("somecall() failed\n");
       if (errsv == ...) { ... }
    }

  5. #5
    Membre éclairé
    Homme Profil pro
    Webmaster
    Inscrit en
    Mai 2011
    Messages
    258
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2011
    Messages : 258
    Par défaut
    Citation Envoyé par WhiteCrow Voir le message
    Super ! ça me dépanne !

    Citation Envoyé par Bktero Voir le message
    Merci ! C'est exactement ce que je fais !

  6. #6
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 832
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 832
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Bktero Voir le message
    Si, il y a des cas où on teste errno, comme montré dans la documentation : https://man7.org/linux/man-pages/man3/errno.3.html
    Oui t'as raison, je n'aurais jamais du dire "jamais". Effectivement il y a des cas (lectures non bloquantes par exemple) où on teste si errno vaut/ne vaut pas EAGAIN afin de détecter si c'est "rien lu" ou "erreur de lecture".
    Mais c'était sa façon de le dire, avec ce "bien sûr" comme si c'était un truc à faire tout le temps et surtout qui n'avait rien à voir avec le vrai souci.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

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

Discussions similaires

  1. [FB] Gestion des erreurs et application francophone
    Par Benjamin GAGNEUX dans le forum Installation
    Réponses: 10
    Dernier message: 20/05/2006, 14h54
  2. [struts][Datasource]Gestion des erreurs
    Par GreenJay dans le forum Struts 1
    Réponses: 8
    Dernier message: 15/09/2004, 16h51
  3. [VB6] Gestion des erreurs dans une dll
    Par zimba-tm dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 02/08/2004, 11h20
  4. [XSLT]Est ce qu'il y'a la gestion des erreur en xslt ?
    Par miloud dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 04/02/2004, 17h19
  5. [LG]gestion des erreurs
    Par frontin dans le forum Langage
    Réponses: 3
    Dernier message: 29/11/2003, 22h41

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