Un processus orphelin sous Unix est un processus dont le processus parent a terminé son exécution ou a été arrêté avant lui. Normalement, sous Unix, chaque processus est créé par un autre processus (appelé parent), et le système d'exploitation maintient une hiérarchie entre eux.

Mécanisme et conséquences

Terminaison du parent :

Quand un processus parent se termine (volontairement ou non), ses processus enfants deviennent orphelins.

Adoption par init (PID 1) :

Le système Unix réassigne automatiquement le processus orphelin au processus init (ou systemd sur les systèmes modernes), qui devient son nouveau parent. init est responsable de récupérer l'état de sortie des processus orphelins lorsqu'ils se terminent, évitant ainsi qu'ils ne restent à l'état de zombies.
Nuance : sous Linux, si un ancêtre s'est déclaré « sous-collecteur » (prctl(PR_SET_CHILD_SUBREAPER), comme le fait systemd --user), l'orphelin est rattaché à cet ancêtre plutôt qu'au PID 1.

Différence avec un processus zombie :

Un processus orphelin est un processus toujours en cours d'exécution, mais sans parent d'origine.
Un processus zombie est un processus terminé dont le parent n'a pas encore récupéré son état de sortie (via wait() ou waitpid()).
Un orphelin devient brièvement zombie à sa mort, puis est immédiatement collecté par son parent adoptif : les deux notions sont donc distinctes et complémentaires.

Exemple
Si un script shell lance un processus en arrière-plan (&) et que le script se termine avant la fin du processus enfant, ce dernier devient orphelin et est adopté par init.

Commandes pour identifier les processus orphelins
ps -ef ou ps -eo pid,ppid,cmd : affiche les processus avec leur PPID (Parent Process ID). Un processus orphelin aura un PPID égal à 1 (ou au PID du sous-collecteur).
pstree : affiche l'arborescence des processus, permettant de visualiser les processus adoptés par init.

Gestion par le système
init ou systemd s'assure que les processus orphelins ne restent pas sans supervision. Lorsqu'un processus orphelin se termine, son parent adoptif récupère son état de sortie, empêchant l'accumulation de zombies.

Cas particuliers
Si un processus orphelin est un démon (processus en arrière-plan), il peut continuer à fonctionner normalement sous la supervision de init.
L'orphelinat en lui-même ne consomme pas de ressources supplémentaires ; en revanche, un orphelin mal conçu (boucle infinie) continue de consommer du CPU sans supervision applicative.

Résumé
Un processus orphelin est un processus dont le parent a disparu, mais qui continue de s'exécuter sous la supervision de init. Ce mécanisme garantit la stabilité du système en évitant l'accumulation de processus zombies.