29 lines
1.1 KiB
C++
29 lines
1.1 KiB
C++
// 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
|