2015-03-05 1 views
0

Salut les gars j'ai un problème que je ne peux pas trouver une réponse, donc je pensais que je vais vous demander les gars: pComment utiliser errno en conséquence à la fonction appelée

donc je suis en train de faire un Serveur HTTP en C et j'utilise "errno.h" pour la gestion des erreurs mais je ne sais pas quels codes d'erreur je devrais tester, pour être plus précis je veux vérifier les erreurs renvoyées par les fonctions: socket(), bind(), accept() etc .. afin que j'agisse en conséquence à chaque erreur et pas de la même manière pour chaque erreur. Est-ce que je vérifie chaque code d'erreur possible chaque fois que je fais un appel système/bibliothèque ou que je n'utilise pas d'errno ???

+1

Avec les fonctions select, définissez 'errno = 0;' avant l'appel de la fonction et vérifiez par la suite si la valeur est différente de zéro. – chux

+0

@chux: Il n'y a aucune garantie qu'une fonction de bibliothèque qui retourne sans indication d'erreur ne modifie pas la valeur de errno. "Le réglage de" errno "après un appel réussi à une fonction n'est pas spécifié, sauf si la description de cette fonction spécifie que errno ne doit pas être modifié." (http://pubs.opengroup.org/onlinepubs/9699919799/functions/errno.html) – rici

+1

@Aristos Miliaressis "en espérant une réponse définitive ...", mais seulement donné SO <20 minutes avant d'accepter une réponse. Non que la [réponse acceptée] (http://stackoverflow.com/a/28885681/2410359) est mauvaise, mais donnez du temps à SO. Avec des questions difficiles, cela peut prendre des jours. – chux

Répondre

0

Vous vérifiez pour les codes d'erreur qui signifie quelque chose de spécifique à vous sur l'appel que vous faites, puis genrianally erreur sur le reste.

doFoo() 
if(errno == EMISSING) 
    return FooNotFound; 
if(errno == EAGAIN) 
    retryFoo(); 
else 
    perror.... 
+0

Ce n'est pas une mauvaise idée de vérifier 'errno' et de l'effacer avant de l'utiliser comme ça ... Je viens de voir que quelqu'un a commenté la question. –

+0

je sautais pour une réponse définitive sur quels codes d'erreur je devrais tester mais je suppose qu'il n'y a pas une telle réponse définitive, je vais devoir faire un peu plus de devoirs: p, merci quand même .. –