Exit (crida al sistema)

De la Viquipèdia, l'enciclopèdia lliure

En molts sistemes operatius d'ordinador, un procés informàtic finalitza la seva execució fent una crida de sortida del sistema. De manera més general, una sortida en un entorn multithreading significa que un fil d'execució ha deixat d'executar-se. Per a la gestió de recursos, el sistema operatiu recupera els recursos (memòria, fitxers, etc.) que van ser utilitzats pel procés. Es diu que el procés és un procés mort després d'acabar.[1]

Com funciona[modifica]

Sota els sistemes operatius Unix i similars a Unix, un procés s'inicia quan el seu procés principal executa una crida al sistema fork. Aleshores, el procés principal pot esperar que finalitzi el procés secundari o pot continuar amb l'execució (possiblement desfer altres processos secundaris). Quan el procés fill acaba ("mor"), ja sigui normalment trucant a exit, o anormalment a causa d'una excepció o senyal fatal (per exemple, SIGTERM, SIGINT, SIGKILL), es retorna un estat de sortida al sistema operatiu i es mostra un senyal SIGCHLD. enviat al procés principal. Aleshores, el procés principal pot recuperar l'estat de sortida mitjançant la crida del sistema d'espera.[2]

La majoria dels sistemes operatius permeten que el procés de finalització proporcioni un estat de sortida específic al sistema, que es posa a disposició del procés principal. Normalment es tracta d'un valor sencer, tot i que alguns sistemes operatius (per exemple, el Pla 9 de Bell Labs) permeten retornar una cadena de caràcters. Els sistemes que retornen un valor enter normalment utilitzen un valor zero per indicar l'execució correcta i valors diferents de zero per indicar condicions d'error. Altres sistemes (per exemple, OpenVMS) utilitzen valors parells per a l'èxit i valors senars per als errors. Altres sistemes (per exemple, IBM z/OS i els seus predecessors) utilitzen intervals de valors enters per indicar resultats d'èxit, advertència i error.[3]

Exemples[modifica]

Els programes següents finalitzen i tornen un estat de sortida satisfactori al sistema.[4]

En llenguatge C:

#include <stdlib.h>

int main(void)
{
    exit(EXIT_SUCCESS); /* or return EXIT_SUCCESS */
}

Referències[modifica]

  1. Buzdar, Karim. «Fork, exec, wait and exit system call explained in Linux» (en anglès americà), 10-01-2022. [Consulta: 12 desembre 2023].
  2. «_exit, _Exit - terminate the calling process» (en anglès). [Consulta: 12 desembre 2023].
  3. «Introduction of System Call» (en anglès americà), 05-01-2018. [Consulta: 12 desembre 2023].
  4. «Use of exit() function» (en anglès). [Consulta: 12 desembre 2023].