Guía de uso práctico
Interacción de la shell con los códigos de estado
Verificación del estado de retorno
$ ./myprogram
$ echo $? ## Prints the last program's exit status
Estrategias de manejo de errores
Códigos de error personalizados
#define SUCCESS 0
#define FILE_ERROR 10
#define NETWORK_ERROR 20
int main() {
if (file_operation_fails()) {
return FILE_ERROR;
}
if (network_connection_fails()) {
return NETWORK_ERROR;
}
return SUCCESS;
}
Flujo de trabajo de los códigos de estado
graph TD
A[Program Execution] --> B{Status Code}
B --> |0| C[Shell: Continue]
B --> |Non-zero| D[Shell: Handle Error]
Integración con scripting
Manejo de errores en Bash
#!/bin/bash
./myprogram
if [ $? -ne 0 ]; then
echo "Program failed with error"
## Additional error handling
fi
Mejores prácticas
Práctica |
Descripción |
Ejemplo |
Usar códigos significativos |
Definir estados de error específicos |
#define DB_CONNECTION_FAILED 50 |
Documentar los códigos |
Explicar cada código de estado |
Comentarios que expliquen las condiciones de error |
Mapeo consistente |
Estandarizar el manejo de errores |
Usar rangos de errores predefinidos |
Recomendación de LabEx
Al desarrollar en LabEx, crea un encabezado de códigos de error centralizado:
// error_codes.h
#ifndef ERROR_CODES_H
#define ERROR_CODES_H
#define SUCCESS 0
#define INVALID_INPUT 1
#define MEMORY_ALLOCATION_FAILED 2
// Add more specific error codes
#endif
#include <stdio.h>
#include <stdlib.h>
enum ErrorCodes {
SUCCESS = 0,
FILE_NOT_FOUND = 10,
PERMISSION_DENIED = 11
};
int main() {
FILE *file = fopen("nonexistent.txt", "r");
if (!file) {
perror("Error opening file");
return FILE_NOT_FOUND;
}
return SUCCESS;
}
Puntos clave
- Los códigos de estado proporcionan un mecanismo de comunicación
- Utiliza valores de retorno específicos y significativos
- Integra con scripting de shell
- Documenta y estandariza los códigos de error