Challenge: Les applications employant System.Diagnostics.Process
pour engendrer les processus enfants sont confrontés à un problème commun: la cessation abrupte du processus parent (par exemple, via le gestionnaire de tâches) laisse souvent les processus d'enfants en cours d'exécution. Cela nécessite un mécanisme pour garantir que les processus d'enfants dépendants sortent proprement lorsque l'application parent se ferme.
Résolution: Tire de la mise à jour des objets de travail Windows fournit une solution élégante. Un objet de travail agit comme un conteneur de processus; Lorsque le processus parent (associé à l'objet de travail) se termine, le système d'exploitation met en fin de tous les processus enfants dans ce même objet de travail.
Étapes d'implémentation:
LimitFlags
de l'objet Job à 0x2000
(représentant JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE
). Cette étape cruciale garantit que les processus enfants sont interrompus lorsque l'objet du travail est fermé. AddProcess
pour associer tout processus d'enfant nouvellement créé à l'objet de travail. Cette approche garantit que les processus d'enfants sont licenciés de manière fiable, même dans des scénarios de résiliation inattendue du processus parent.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!