divendres, 14 d’agost del 2020

Funcions stdlib [2/9]: abort, atexit, exit, system, getenv

 Funcions per a finalitzar processos:



Funció abort:     void abort(void);

Ocasiona una terminació anormal del programa, a menys que la senyal SIGABRT estigué sent capturada per un controlador de senyals que no retorni. Si han streams oberts de sortida son buidats, o si els streams oberts son tancats o fitxers temporals seran esborrats segons la definició de la implementació.

Una forma definida de implementar el estat “terminació sense èxit” es retornant al entorn local per mitja de la crida de la funció raise(SIGABRT).

La funció abort no pot retornar al seu invocador.
La funció abort no retorna cap valor.



Funció  atexit:     int atexit(void (*func(void));

Registra la funció apuntada per *func, para ser cridada sense arguments al moment de finalitzar de manera normal el programa. 

La implementació aura d’acceptar el registre de almenys 32 funcions.
La funció atexit retorna cero si el registre te èxit i un valor diferent a cero si falla.





Funció exit:     void exit(int estat);

La funció exit casiona una terminació normal de el programa. 

Si s'executa més d'una trucada de la funció exit, el comportament no està definit.
Primerament, totes les funcions registrades per la funció atexit són cridades, en l'ordre invers dels seus registres. Cada funció és tantes vegades com va ser resgistrada. Tot seguit, tots els streams oberts amb dades emmagatzemades encara sense escriure són clars, tots els streams oberts són tancats, i tots els fitxers creats per la funció tmpfile són esborrats.

Finalment, el control és tornat a l'entorn local. Si el valor d'estat és zero o EXIT_SUCCESS, una forma definida segons la implementació de l'estat "terminació amb èxit" és retornada. Si el valor d'estat és EXIT_FAILURE, una forma definida segons la implementació de l'estat "terminació sense èxit" és retornada. Altrament l'estat retornat està definida segons la implementació. La funció exit no pot tornar al seu invocador.

La funció exit no retorna cap valor.





Funció system:     int system(const char *cadena);

Passa la cadena apuntada per cadena al entorn local per ser executada per el “processador de comandes”.

De una forma definida segons la implementació. Un punter nul pot ser utilitzat para cadena, para comprovar si existeix un processador de comandes.

Si el argument es un punter nul, la funció System retorna un valor diferent a cero, nomes si el processador de comandes esta disponible. Si el argument no es un punter nul, la funció System retornarà un valor definit segons la implementació.

La funcio system utilitza comandes CMD (MS-DOS).







Funció getenv:     char *getenv(const char *nom);


Busca una “llista d’entorn” proporcionat per l’entorn local, para una cadena que emparelli la cadena apuntada per nom.

El conjunt de noms del entorn i el mètode para alternar la llista de entorn estan definits segons la implementació.

La funció getenv retorna un punter a la cadena associat amb el membre emparellat de la llista. La cadena que apunta a “allò” no serà modificada per el programa, però pot ser sobreescrita per una crida posterior a la funció getenv. Si el nom especificat no pot ser trobat, un punter nul es retornat.

La funcio system utilitza comandes CMD (MS-DOS).








Més informació -> llibreria <stdlib.h>