Una forma alternativa per effettuare una terminazione esplicita di un
programma è quella di chiamare direttamente la \textit{system call}
\funcd{\_exit},\footnote{la stessa è definita anche come \funcd{\_Exit} in
Una forma alternativa per effettuare una terminazione esplicita di un
programma è quella di chiamare direttamente la \textit{system call}
\funcd{\_exit},\footnote{la stessa è definita anche come \funcd{\_Exit} in
funzione viene invocata \func{exit\_group} che termina tutti i
\textit{thread} del processo e non solo quello corrente (fintanto che non si
usano i \textit{thread}\unavref{, vedi sez.~\ref{cha:threads},} questo non
funzione viene invocata \func{exit\_group} che termina tutti i
\textit{thread} del processo e non solo quello corrente (fintanto che non si
usano i \textit{thread}\unavref{, vedi sez.~\ref{cha:threads},} questo non
deve prendere argomenti e non deve ritornare niente. In sostanza deve la
funzione di pulizia dovrà essere definita come \code{void function(void)}.
deve prendere argomenti e non deve ritornare niente. In sostanza deve la
funzione di pulizia dovrà essere definita come \code{void function(void)}.
-Un'estensione di \func{atexit} è la funzione \funcd{on\_exit}, che le
-\acr{glibc} includono per compatibilità con SunOS ma che non è detto sia
-definita su altri sistemi,\footnote{la funzione è disponibile dalle
+Un'estensione di \func{atexit} è la funzione \funcd{on\_exit}, che la
+\acr{glibc} include per compatibilità con SunOS ma che non è detto sia
+definita su altri sistemi,\footnote{la funzione è disponibile dalla
\acr{glibc} 2.19 definendo la macro \macro{\_DEFAULT\_SOURCE}, mentre in
precedenza erano necessarie \macro{\_BSD\_SOURCE} o \macro{\_SVID\_SOURCE};
non essendo prevista dallo standard POSIX è in generale preferibile evitarne
\acr{glibc} 2.19 definendo la macro \macro{\_DEFAULT\_SOURCE}, mentre in
precedenza erano necessarie \macro{\_BSD\_SOURCE} o \macro{\_SVID\_SOURCE};
non essendo prevista dallo standard POSIX è in generale preferibile evitarne
In genere si usano \func{malloc} e \func{calloc} per allocare dinamicamente
un'area di memoria.\footnote{queste funzioni presentano un comportamento
In genere si usano \func{malloc} e \func{calloc} per allocare dinamicamente
un'area di memoria.\footnote{queste funzioni presentano un comportamento
è nullo. Nel primo caso viene comunque restituito un puntatore valido,
anche se non è chiaro a cosa esso possa fare riferimento, nel secondo caso
viene restituito \val{NULL}. Il comportamento è analogo con
è nullo. Nel primo caso viene comunque restituito un puntatore valido,
anche se non è chiaro a cosa esso possa fare riferimento, nel secondo caso
viene restituito \val{NULL}. Il comportamento è analogo con
Nessuna delle due funzioni ha una chiara standardizzazione e nessuna delle due
compare in POSIX.1, inoltre ci sono indicazioni discordi sui file che ne
contengono la definizione;\footnote{secondo SUSv2 \func{valloc} è definita in
Nessuna delle due funzioni ha una chiara standardizzazione e nessuna delle due
compare in POSIX.1, inoltre ci sono indicazioni discordi sui file che ne
contengono la definizione;\footnote{secondo SUSv2 \func{valloc} è definita in
e \acr{libc5} la dichiarano in \headfile{malloc.h}, lo stesso vale per
\func{memalign} che in alcuni sistemi è dichiarata in \headfile{stdlib.h}.}
per questo motivo il loro uso è sconsigliato, essendo state sostituite dalla
nuova \funcd{posix\_memalign}, che è stata standardizzata in POSIX.1d e
e \acr{libc5} la dichiarano in \headfile{malloc.h}, lo stesso vale per
\func{memalign} che in alcuni sistemi è dichiarata in \headfile{stdlib.h}.}
per questo motivo il loro uso è sconsigliato, essendo state sostituite dalla
nuova \funcd{posix\_memalign}, che è stata standardizzata in POSIX.1d e
allocata con \func{posix\_memalign} deve essere disallocata con \func{free},
che in questo caso però è quanto richiesto dallo standard.
allocata con \func{posix\_memalign} deve essere disallocata con \func{free},
che in questo caso però è quanto richiesto dallo standard.
\funcd{aligned\_alloc}, prevista dallo standard C11 (e disponibile definendo
\const{\_ISOC11\_SOURCE}), il cui prototipo è:
\funcd{aligned\_alloc}, prevista dallo standard C11 (e disponibile definendo
\const{\_ISOC11\_SOURCE}), il cui prototipo è:
vecchie \acr{libc4} e \acr{libc5}; nella \acr{glibc}, dalla versione 2.0
alla 2.1.1, veniva invece fatta una copia, seguendo il comportamento di
BSD4.4; dato che questo può dar luogo a perdite di memoria e non rispetta lo
vecchie \acr{libc4} e \acr{libc5}; nella \acr{glibc}, dalla versione 2.0
alla 2.1.1, veniva invece fatta una copia, seguendo il comportamento di
BSD4.4; dato che questo può dar luogo a perdite di memoria e non rispetta lo
eliminando anche, sempre in conformità a SUSv2, l'attributo \direct{const}
dal prototipo.} pertanto ogni cambiamento alla stringa in questione si
riflette automaticamente sull'ambiente, e quindi si deve evitare di passare a
eliminando anche, sempre in conformità a SUSv2, l'attributo \direct{const}
dal prototipo.} pertanto ogni cambiamento alla stringa in questione si
riflette automaticamente sull'ambiente, e quindi si deve evitare di passare a
%alternativa costituita dalle cosiddette \textit{long-options}, che consente di
%esprimere le opzioni in una forma più descrittiva che nel caso più generale è
%qualcosa del tipo di ``\texttt{-{}-option-name=parameter}''.
%alternativa costituita dalle cosiddette \textit{long-options}, che consente di
%esprimere le opzioni in una forma più descrittiva che nel caso più generale è
%qualcosa del tipo di ``\texttt{-{}-option-name=parameter}''.