Syscall BSD#1
svc · unix #1
exit
Termine le processus appelant et remonte un statut 8 bits au parent via wait().
Prototype
void exit(int rval);Retour: void
Arguments
| Name | Type | Dir | Description |
|---|---|---|---|
| rval | int | - |
Historique des versions
| XNU tag | macOS | # |
|---|---|---|
| xnu-1456.1.26 | macOS 10.6 Snow Leopard | 1 |
| xnu-1486.2.11 | — | 1 |
| xnu-1504.15.3 | — | 1 |
| xnu-1504.3.12 | — | 1 |
| xnu-1504.7.4 | — | 1 |
| xnu-1504.9.17 | — | 1 |
| xnu-1504.9.26 | — | 1 |
| xnu-1504.9.37 | — | 1 |
Notes
Sur XNU, _exit() / exit() passent par exit1() côté noyau, qui détruit les threads, libère la task Mach, ferme les descripteurs et envoie SIGCHLD au parent. Le exit() libc exécute en plus les handlers atexit() et purge les buffers stdio ; l'appel système brut ne le fait pas. Les zombies restent dans la table proc tant que le parent ne les a pas récoltés via wait4/waitid.
Détection
Endpoint Security émet ES_EVENT_TYPE_NOTIFY_EXIT avec le statut au format wait4. La probe DTrace proc:::exit déclenche avec le code de sortie dans args[0].
API associées
forkwait4waitidexecvekill