teoria studio sistemica psicologia programacion mvc hiddenfor example c linux error-handling errno

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 } }

  1. Cuando configuro el errno a algún valor, ¿qué hace? solo comprobación de errores?

  2. ¿Cómo puedo configurar errno en los métodos anteriores func1 y func2 para EEXIST y ENOENT

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; } }