J'ai deux appels à deux méthodes différentes:Comment définir la valeur errno?
void func1()
{
// do something
if (fail)
{
// then set errno to EEXIST
}
}
Et la deuxième méthode:
void func2()
{
// do something
if (fail)
{
// then set errno to ENOENT
}
}
Quand je mets le
errno
à une certaine valeur, que fait-il? juste une vérification d'erreur?Comment puis-je mettre
errno
dans les méthodes ci-dessusfunc1
etfunc2
-EEXIST
etENOENT
Merci
Conventionnellement, 'errno' est utilisé pour signaler les * erreurs système *. Pensez-vous que votre bibliothèque ou votre code fait partie du système? Sinon, utilisez un autre mécanisme pour signaler les erreurs. –
Pas nécessairement, les fonctions utilitaires comme strtol() semblent aussi renvoyer ERANGE, par exemple, qui n'est pas vraiment un _system error_. – proteus
Un exemple d'endroit où il peut être approprié de définir errno serait dans une fonction de lecture ou d'écriture callback passée à funopen(). Dans ce cas, on s'attend à ce que votre implémentation corresponde au contrat d'un appel système (read() ou write()), donc il serait logique de renvoyer -1 en cas d'erreur et de définir errno avec l'erreur spécifique. – orpheist