%% process.tex
%%
-%% Copyright (C) 2000-2011 Simone Piccardi. Permission is granted to
+%% Copyright (C) 2000-2012 Simone Piccardi. Permission is granted to
%% copy, distribute and/or modify this document under the terms of the GNU Free
%% Documentation License, Version 1.1 or any later version published by the
%% Free Software Foundation; with the Invariant Sections being "Un preambolo",
esempio, è il seguente, e si noti come gli \textit{header file} possano essere
referenziati con il nome fra parentesi angolari, nel qual caso si indica l'uso
di quelli installati con il sistema,\footnote{in un sistema GNU/Linux che
- segue le specifiche del \textit{Filesystem Hierarchy Standard} (per maggiori
- informazioni si consulti sez.~1.2.3 di \cite{AGL}) si trovano sotto
- \texttt{/usr/include}.} o fra virgolette, nel qual caso si fa riferimento ad
-una versione locale, da indicare con un pathname relativo:
+ segue le specifiche del \itindex{Filesystem~Hierarchy~Standard~(FHS)}
+ \textit{Filesystem Hierarchy Standard} (per maggiori informazioni si
+ consulti sez.~1.2.3 di \cite{AGL}) si trovano sotto \texttt{/usr/include}.}
+o fra virgolette, nel qual caso si fa riferimento ad una versione locale, da
+indicare con un pathname relativo:
\includecodesnip{listati/main_include.c}
Si tenga presente che oltre ai nomi riservati a livello generale di cui si è
specializzata per il debugging). Esistono varie librerie che forniscono dei
sostituti opportuni delle funzioni di allocazione in grado, senza neanche
ricompilare il programma,\footnote{esempi sono \textit{Dmalloc}
- \href{http://dmalloc.com/}{\textsf{http://dmalloc.com/}} di Gray Watson ed
- \textit{Electric Fence} di Bruce Perens.} di eseguire diagnostiche anche
-molto complesse riguardo l'allocazione della memoria. Vedremo alcune delle
-funzionalità di ausilio presenti nella \acr{glibc} in
-sez.~\ref{sec:proc_memory_adv_management}.
+ \url{http://dmalloc.com/} di Gray Watson ed \textit{Electric Fence} di Bruce
+ Perens.} di eseguire diagnostiche anche molto complesse riguardo
+l'allocazione della memoria. Vedremo alcune delle funzionalità di ausilio
+presenti nella \acr{glibc} in sez.~\ref{sec:proc_memory_adv_management}.
Una possibile alternativa all'uso di \func{malloc}, per evitare di soffrire
dei problemi di \itindex{memory~leak} \textit{memory leak} descritti in
{La funzione ritorna $0$ in caso di successo e $-1$ per un errore, nel qual
caso \var{errno} assumerà uno dei valori:
\begin{errlist}
- \item[\errcode{ENOMEM}] o \param{addr} + \param{length} eccede la dimensione
- della memoria usata dal processo o l'intervallo di indirizzi specificato
- non è mappato.
- \item[\errcode{EINVAL}] \param{addr} non è un multiplo delle dimensioni di
- una pagina.
- \item[\errcode{EFAULT}] \param{vec} punta ad un indirizzo non valido.
\item[\errcode{EAGAIN}] il kernel è temporaneamente non in grado di fornire
una risposta.
+ \item[\errcode{EFAULT}] \param{vec} punta ad un indirizzo non valido.
+ \item[\errcode{EINVAL}] \param{addr} non è un multiplo delle dimensioni di
+ una pagina.
+ \item[\errcode{ENOMEM}] o \param{addr}$+$\param{length} eccede la dimensione
+ della memoria usata dal processo o l'intervallo di indirizzi specificato
+ non è mappato.
\end{errlist}}
\end{funcproto}
{Entrambe le funzioni ritornano $0$ in caso di successo e $-1$ in caso di
errore, nel qual caso \var{errno} assumerà uno dei valori:
\begin{errlist}
+ \item[\errcode{EINVAL}] \param{len} non è un valore positivo.
\item[\errcode{ENOMEM}] alcuni indirizzi dell’intervallo specificato non
corrispondono allo spazio di indirizzi del processo o si è superato il
limite di \const{RLIMIT\_MEMLOCK} per un processo non privilegiato (solo
per kernel a partire dal 2.6.9).
- \item[\errcode{EINVAL}] \param{len} non è un valore positivo.
\item[\errcode{EPERM}] il processo non è privilegiato (per kernel precedenti
il 2.6.9) o si ha un limite nullo per \const{RLIMIT\_MEMLOCK} e
il processo non è privilegiato (per kernel a partire dal 2.6.9).
caso di successo e \val{NULL} in caso di errore, nel qual caso \var{errno}
assumerà uno dei valori:
\begin{errlist}
- \item[\errcode{ENOMEM}] non c'è memoria sufficiente per l'allocazione.
\item[\errcode{EINVAL}] \param{boundary} non è una potenza di due.
+ \item[\errcode{ENOMEM}] non c'è memoria sufficiente per l'allocazione.
\end{errlist}}
\end{funcproto}
caso di successo e \val{NULL} in caso di errore, nel qual caso \var{errno}
assumerà uno dei valori:
\begin{errlist}
- \item[\errcode{ENOMEM}] non c'è memoria sufficiente per l'allocazione.
\item[\errcode{EINVAL}] \param{alignment} non è potenza di due e multiplo
di \code{sizeof(void *)}.
+ \item[\errcode{ENOMEM}] non c'è memoria sufficiente per l'allocazione.
\end{errlist}}
\end{funcproto}
\end{itemize*}
In fig.~\ref{fig:proc_options_code} si è mostrata la sezione del programma
-\file{ForkTest.c}, che useremo nel prossimo capitolo per effettuare dei test
+\file{fork\_test.c}, che useremo nel prossimo capitolo per effettuare dei test
sulla creazione dei processi, deputata alla decodifica delle opzioni a riga di
comando da esso supportate.
{La funzione ritorna $0$ in caso di successo e $-1$ per un errore,
nel qual caso \var{errno} assumerà uno dei valori:
\begin{errlist}
- \item[\errcode{ENOMEM}] non c'è memoria sufficiente per aggiungere una nuova
- variabile all'ambiente.
\item[\errcode{EINVAL}] \param{name} è \val{NULL} o una stringa di lunghezza
nulla o che contiene il carattere ``\texttt{=}''.
+ \item[\errcode{ENOMEM}] non c'è memoria sufficiente per aggiungere una nuova
+ variabile all'ambiente.
\end{errlist}}
\end{funcproto}