34 lines
1.7 KiB
C++
34 lines
1.7 KiB
C++
#pragma once
|
|
|
|
// --- Namespace SystemShutdown: utilidad multiplataforma para apagar el sistema de forma segura ---
|
|
namespace SystemShutdown {
|
|
|
|
// --- Enums ---
|
|
enum class ShutdownResult {
|
|
SUCCESS = 0, // Éxito
|
|
ERROR_PERMISSION, // Error de permisos insuficientes
|
|
ERROR_SYSTEM_CALL, // Error en la llamada al sistema
|
|
ERROR_FORK_FAILED, // Error al crear proceso hijo (Unix)
|
|
ERROR_UNSUPPORTED // Sistema operativo no soportado
|
|
};
|
|
|
|
// --- Estructuras ---
|
|
struct ShutdownConfig {
|
|
int delay_seconds{5}; // Segundos de retraso antes del apagado
|
|
bool force_close_apps{true}; // Forzar cierre de aplicaciones
|
|
const char* shutdown_message{"El sistema se apagará..."}; // Mensaje mostrado durante el apagado
|
|
|
|
// Constructor con valores por defecto
|
|
ShutdownConfig() = default;
|
|
};
|
|
|
|
// --- Funciones ---
|
|
auto shutdownSystem() -> ShutdownResult; // Apaga el sistema con configuración por defecto
|
|
auto shutdownSystem(const ShutdownConfig& config) -> ShutdownResult; // Apaga el sistema con configuración personalizada
|
|
auto shutdownSystem(int delay_seconds, bool force_apps = true) -> ShutdownResult; // Apaga el sistema con parámetros simples
|
|
auto resultToString(ShutdownResult result) -> const char*; // Convierte un código de resultado a string descriptivo
|
|
auto isShutdownSupported() -> bool; // Verifica si el sistema actual soporta apagado programático
|
|
auto getRequiredPermissions() -> const char*; // Obtiene información sobre los permisos necesarios
|
|
|
|
} // namespace SystemShutdown
|