Errno en C

Errno en C

En el lenguaje de programación C, los errores son manejados utilizando la librería errno. Esta librería proporciona un mecanismo para reportar los errores en una aplicación y contiene una lista de códigos de error y su significado. El uso correcto de errno es fundamental para garantizar una aplicación robusta y segura. En este artículo se describirá cómo utilizar errno en C y se proporcionarán ejemplos prácticos.

📋 Aquí podrás encontrar✍
  1. ¿Qué es errno?
    1. ¿Cómo se utiliza errno en C?
    2. ¿Cómo se puede obtener el mensaje de error?
    3. ¿Cómo se puede limpiar el contenido de errno?
  2. Códigos de error comunes en C
  3. Ejemplos prácticos
    1. Comprobar si fopen() ha fallado:
    2. Comprobando si una llamada al sistema ha fallado:
    3. Comprobando los límites de un array:
  4. Conclusión
  5. Preguntas frecuentes
    1. ¿Existen otros mecanismos para manejar errores en C?
    2. ¿Puede errno contener valores negativos?
    3. ¿Las funciones de biblioteca siempre establecen errno?
    4. ¿Es necesario limpiar errno antes de utilizar una función de biblioteca?

¿Qué es errno?

Errno es una variable global que almacena el número de error que se produjo en la última llamada al sistema o función de biblioteca que se desencadenó.

¿Cómo se utiliza errno en C?

El uso de errno en C es sencillo. Después de una llamada al sistema o función de biblioteca que puede producir un error, se debe comprobar el valor de errno. Si errno es diferente de cero, significa que se ha producido un error y errno contiene el código de error.

¿Cómo se puede obtener el mensaje de error?

El mensaje de error asociado con errno se puede obtener utilizando la función strerror(). Esta función toma como argumento el valor de errno y devuelve una cadena que describe el error. Por ejemplo:

printf("Error: %sn", strerror(errno));

¿Cómo se puede limpiar el contenido de errno?

Para limpiar el contenido de errno, simplemente se debe establecer su valor en cero.

errno = 0;

Códigos de error comunes en C

La siguiente es una lista de los códigos de error más comunes en C:

  • 1 - Operación no permitida
  • 2 - No se encontró el archivo
  • 3 - Permiso denegado
  • 4 - Error de interrupción del proceso
  • 5 - Entrada/salida fallida
  • 6 - Argumento no válido
  • 7 - Memoria insuficiente
  • 8 - Error de ejecución de la aritmética
  • 9 - Demasiados archivos abiertos en el sistema

Ejemplos prácticos

A continuación, se presentan algunos ejemplos prácticos de uso de errno:

Comprobar si fopen() ha fallado:


FILE *fp = fopen("archivo.txt", "r");
if (fp == NULL) {
printf("Error al abrir el archivo: %sn", strerror(errno));
}

Comprobando si una llamada al sistema ha fallado:


if (mkdir("directorio", 0777) == -1){
printf("Error al crear el directorio: %sn", strerror(errno));
}

Comprobando los límites de un array:


int array[5];
int index = 10;
if (index >= sizeof(array)/sizeof(int)) {
printf("Índice fuera de los límites del array: %sn", strerror(errno));
}

Conclusión

El manejo adecuado de los errores es importante para garantizar que las aplicaciones sean robustas y seguras. La librería errno proporciona un mecanismo útil para reportar errores en C. En este artículo hemos visto cómo utilizar errno y algunos ejemplos prácticos de su uso.

Preguntas frecuentes

¿Existen otros mecanismos para manejar errores en C?

Sí, existen otras librerías y mecanismos para manejar errores en C, como por ejemplo setjmp/longjmp, signal y las excepciones C++. Sin embargo, errno es una opción comúnmente utilizada y es parte integral de la librería estándar de C.

¿Puede errno contener valores negativos?

Sí, errno puede contener valores negativos. Los valores negativos se utilizan para indicar errores específicos de la implementación del sistema operativo o para errores no definidos en la norma POSIX.

¿Las funciones de biblioteca siempre establecen errno?

No, las funciones de biblioteca no siempre establecen errno. Algunas funciones pueden devolver un código de error en lugar de establecer errno.

¿Es necesario limpiar errno antes de utilizar una función de biblioteca?

No, no es necesario limpiar errno antes de utilizar una función de biblioteca. Si se produce un error, la función de biblioteca establecerá automáticamente el valor de errno.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir

Este sitio web utiliza Cookies propias y de terceros de análisis para recopilar información con la finalidad de mejorar nuestros servicios, así como para el análisis de su navegación. Si continua navegando, se acepta el uso y si no lo desea puede configurar el navegador. CÓMO CONFIGURAR