tengo dos llamadas a dos métodos diferentes:¿Cómo establecer el valor de errno?
void func1()
{
// do something
if (fail)
{
// then set errno to EEXIST
}
}
y el segundo método:
void func2()
{
// do something
if (fail)
{
// then set errno to ENOENT
}
}
Cuando me puse la
errno
a algún valor, lo que hace? solo la comprobación de errores?¿Cómo puedo establecer
errno
en los métodosfunc1
anteriores yfunc2
-EEXIST
yENOENT
Gracias
Convencionalmente, 'errno' se usa para informar * errores del sistema *. ¿Siente que su biblioteca o su código es parte del sistema? De lo contrario, use otro mecanismo para informar errores. –
No necesariamente, las funciones de utilidad como strtol() también parecen devolver ERANGE, por ejemplo, que no es realmente un _system error_. – proteus
Un ejemplo de lugar en el que puede ser apropiado establecer errno sería en una devolución de llamada de función de lectura o escritura pasada a funopen(). En este caso, se espera que su implementación coincida con el contrato de una llamada al sistema (leer() o escribir()) por lo que tendría sentido devolver -1 en caso de error y establecer errno con el error específico. – orpheist