Le lancement de processus de Studio host (CoreProcess) devient sequa::platform::ChildProcess dans platform/process, pour être partagé par Studio host et le Core (qui lancera le rendu, ADR 0009). Nouvelle option kill_with_parent : l'enfant meurt avec le parent, même brutalement (job object KILL_ON_JOB_CLOSE sous Windows, fork + PR_SET_PDEATHSIG sous Linux, ignorée sous macOS). Les tests de copie fantôme restent dans studio/host/supervisor (test_shadow.cpp) avec l'enfant de test de platform/process.
1.5 KiB
1.5 KiB
Plateforme : processus
Brique commune de lancement et de supervision d'un processus enfant : le Studio
host l'utilise pour le Core (ADR 0006,
spécification Studio - Core §7),
le Core la réutilise pour lancer le processus de rendu (ADR 0009),
sequa-render en disposera pareil pour ses propres enfants.
API (sequa::platform)
| Pièce | Rôle |
|---|---|
current_process_id |
PID du processus courant (nommage des copies fantômes, etc.) |
is_process_alive |
Un PID est-il encore vivant ? Pré-validation seulement (ADR 0006 : la poignée de main reste l'arbitre) |
LaunchOptions |
Journal en ajout (stdout et stderr fenêtres), console propre (--core-console), kill_with_parent (« mourir avec le parent » : job object JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE sous Windows, fork + PR_SET_PDEATHSIG sous Linux ; ignoré sous macOS pour l'instant) |
ChildProcess |
Lancement (arguments correctement cités sous Windows, journal en ajout, seul le handle du journal est hérité sous Windows), running, wait_for, terminate ; le destructeur NE tue PAS le processus (le cycle de vie appartient à l'appelant, §7.6) |
Le code POSIX (posix_spawn, waitpid, 0600) est écrit mais n'a pas encore été
compilé ni testé (vérification locale Windows uniquement, ADR 0004).
Licences
- MPL 2.0.
- Aucune dépendance externe (doctest seul, pour les tests : MIT).