// relaunch.hpp - Reinici en calent del procés (execv) // // Helper desacoblat perquè el menú de servei demani un reinici sense conèixer // ni Director ni main.cpp. Patró d'ús: // // main() → Relaunch::setArgv(argc, argv) (a l'arrencada) // ServiceMenu → Relaunch::request() (en activar "Reiniciar") // main() → Relaunch::execIfRequested() (al final de SDL_AppQuit) // // L'execv() reemplaça el procés actual: si torna, ha fallat. Es crida després // de destruir el Director per garantir que GPU/àudio/SDL ja són morts. #pragma once namespace System::Relaunch { // Emmagatzema l'argv original. Cal cridar-ho una vegada des de main. void setArgv(int argc, char** argv); // Demana un reinici (no actua immediatament; només marca el flag). void request(); // Si hi ha reinici demanat i tenim argv vàlid, fa execv. En cas d'èxit // no torna. Si execv falla, registra l'error per stderr i surt amb // EXIT_FAILURE (no podem reprendre — els subsistemes ja estan destruïts). void execIfRequested(); } // namespace System::Relaunch