studio - teoria sistemica pdf
¿Cómo establecer el valor de errno? (3)
IMO, el errno estándar diseñado para nivel de sistema. Mi experiencia es no contaminarlos. Si desea simular el mecanismo de errno estándar de C, puede hacer una definición como:
/* your_errno.c */
__thread int g_your_error_code;
/* your_errno.h */
extern __thread int g_your_error_code
#define set_your_errno(err) (g_your_error_code = (err))
#define your_errno (g_your_error_code)
y también puedes implementar your_perror(err_code) . Más información, por favor refiérase a la implementación de glibc .
Tengo dos llamadas a dos métodos diferentes:
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 configuro el
errnoa algún valor, ¿qué hace? solo comprobación de errores?¿Cómo puedo configurar
errnoen los métodos anterioresfunc1yfunc2paraEEXISTyENOENT
Gracias
Para todos los propósitos prácticos, puede tratar errno como una variable global (aunque generalmente no lo es). Así que incluye errno.h y solo errno.h :
errno = ENOENT;
Debe preguntarse si errno es el mejor mecanismo de informe de errores para sus propósitos. ¿Se pueden diseñar las funciones para que devuelvan el código de error?
#include <errno.h>
void func1()
{
// do something
if (fail)
{
errno = ENOENT;
}
}