X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=process.tex;h=770e2b81214373f387a2373c65b3600d1954ec63;hp=b6afd42cc09f5300e25ce23a689a1d3da1eee227;hb=de41308ec9349b36a117358295dacf7cb0bd0877;hpb=81ff87c3e2a6ecd3e33867798cba0d27576f44d0 diff --git a/process.tex b/process.tex index b6afd42..770e2b8 100644 --- a/process.tex +++ b/process.tex @@ -157,11 +157,11 @@ specificato in \param{status} che pu Un'esigenza comune che si incontra nella programmazione è quella di dover effettuare una serie di operazioni di pulizia (ad esempio salvare dei dati, -ripristinare dei settaggi, eliminare dei file temporanei, ecc.) prima della -conclusione di un programma. In genere queste operazioni vengono fatte in -un'apposita sezione del programma, ma quando si realizza una libreria diventa -antipatico dover richiedere una chiamata esplicita ad una funzione di pulizia -al programmatore che la utilizza. +ripristinare delle impostazioni, eliminare dei file temporanei, ecc.) prima +della conclusione di un programma. In genere queste operazioni vengono fatte +in un'apposita sezione del programma, ma quando si realizza una libreria +diventa antipatico dover richiedere una chiamata esplicita ad una funzione di +pulizia al programmatore che la utilizza. È invece molto meno soggetto ad errori, e completamente trasparente all'utente, avere la possibilità di effettuare automaticamente la chiamata ad @@ -175,7 +175,7 @@ pu programma. \bodydesc{La funzione restituisce 0 in caso di successo e -1 in caso di - fallimento, \var{errno} non viene settata.} + fallimento, \var{errno} non viene modificata.} \end{prototype} \noindent la funzione richiede come argomento l'indirizzo della opportuna funzione di pulizia da chiamare all'uscita, che non deve prendere argomenti e @@ -192,7 +192,7 @@ definita su altri sistemi; il suo prototipo rispetto a quello di registrazione. \bodydesc{La funzione restituisce 0 in caso di successo e -1 in caso di - fallimento, \var{errno} non viene settata.} + fallimento, \var{errno} non viene modificata.} \end{prototype} In questo caso la funzione da chiamare prende due parametri, il primo dei @@ -395,7 +395,7 @@ seguenti segmenti: \begin{figure}[htb] \centering \includegraphics[width=5cm]{img/memory_layout} - \caption{Disposizione tipica dei segmenti di memoria di un processo} + \caption{Disposizione tipica dei segmenti di memoria di un processo.} \label{fig:proc_mem_layout} \end{figure} @@ -456,20 +456,20 @@ prototipi sono i seguenti: La funzione restituisce il puntatore alla zona di memoria allocata in caso di successo e \macro{NULL} in caso di fallimento, nel qual caso - \var{errno} viene settata a \macro{ENOMEM}. + \var{errno} assumerà il valore \macro{ENOMEM}. \funcdecl{void *malloc(size\_t size)} Alloca \var{size} byte nello heap. La memoria non viene inizializzata. La funzione restituisce il puntatore alla zona di memoria allocata in caso di successo e \macro{NULL} in caso di fallimento, nel qual caso - \var{errno} viene settata a \macro{ENOMEM}. + \var{errno} assumerà il valore \macro{ENOMEM}. \funcdecl{void *realloc(void *ptr, size\_t size)} Cambia la dimensione del blocco allocato all'indirizzo \var{ptr} portandola a \var{size}. La funzione restituisce il puntatore alla zona di memoria allocata in caso di successo e \macro{NULL} in caso di fallimento, nel qual caso - \var{errno} viene settata a \macro{ENOMEM}. + \var{errno} assumerà il valore \macro{ENOMEM}. \funcdecl{void free(void *ptr)} Disalloca lo spazio di memoria puntato da \var{ptr}. @@ -558,12 +558,11 @@ che contiene l'errore. Per questo motivo \textit{memory leak}. Per ovviare a questi problemi l'implementazione delle routine di allocazione -delle \acr{glibc} mette a disposizione una serie di funzionalità (su cui -torneremo in \secref{sec:xxx_advanced}) che permettono di tracciare le -allocazioni e le disallocazione, e definisce anche una serie di possibili -\textit{hook} (\textsl{ganci}) che permettono di sostituire alle funzioni di -libreria una propria versione (che può essere più o meno specializzata per il -debugging). +delle \acr{glibc} mette a disposizione una serie di funzionalità che +permettono di tracciare le allocazioni e le disallocazione, e definisce anche +una serie di possibili \textit{hook} (\textsl{ganci}) che permettono di +sostituire alle funzioni di libreria una propria versione (che può essere più +o meno specializzata per il debugging). \subsection{La funzione \func{alloca}} @@ -580,7 +579,7 @@ prototipo La funzione restituisce il puntatore alla zona di memoria allocata in caso di successo e \macro{NULL} in caso di fallimento, nel qual caso - \var{errno} viene settata a \macro{ENOMEM}. + \var{errno} assumerà il valore \macro{ENOMEM}. \end{prototype} \noindent ma in questo caso non è più necessario liberare la memoria (e quindi non esiste un analogo della \func{free}) in quanto essa viene rilasciata @@ -604,7 +603,7 @@ suo utilizzo quindi limita la portabilit non può essere usata nella lista degli argomenti di una funzione, perché lo spazio verrebbe allocato nel mezzo degli stessi. -% Questo è riportato solo dal manuale delle glibc, nelle man page non c'è +% Questo è riportato solo dal manuale delle glibc, nelle pagine di manuale non c'è % traccia di tutto ciò % %Inoltre se si @@ -632,7 +631,7 @@ analoghe system call a cui fanno da interfaccia. I loro prototipi sono: \var{end\_data\_segment}. La funzione restituisce 0 in caso di successo e -1 in caso di - fallimento, nel qual caso \var{errno} viene settata a \macro{ENOMEM}. + fallimento, nel qual caso \var{errno} assumerà il valore \macro{ENOMEM}. \funcdecl{void *sbrk(ptrdiff\_t increment)} Incrementa lo spazio dati di un programma di \var{increment}. Un valore zero restituisce l'attuale posizione @@ -640,7 +639,7 @@ analoghe system call a cui fanno da interfaccia. I loro prototipi sono: La funzione restituisce il puntatore all'inizio della nuova zona di memoria allocata in caso di successo e \macro{NULL} in caso di fallimento, nel qual - caso \macro{errno} viene settata a \macro{ENOMEM}. + caso \macro{errno} assumerà il valore \macro{ENOMEM}. \end{functions} \noindent in genere si usa \func{sbrk} con un valore zero per ottenere l'attuale posizione della fine del segmento dati. @@ -741,7 +740,7 @@ Le funzioni per bloccare e sbloccare singole sezioni di memoria sono \bodydesc{Entrambe le funzioni ritornano 0 in caso di successo e -1 in - caso di errore, nel qual caso \var{errno} è settata ad uno dei + caso di errore, nel qual caso \var{errno} assumerà uno dei valori seguenti: \begin{errlist} \item[\macro{ENOMEM}] alcuni indirizzi dell'intervallo specificato non @@ -828,8 +827,8 @@ che si incarica di leggere la linea di comando e di effettuarne la scansione (il cosiddetto \textit{parsing}) per individuare le parole che la compongono, ciascuna delle quali viene considerata un parametro. Di norma per individuare le parole viene usato come carattere di separazione lo spazio o il tabulatore, -ma il comportamento è modificabile attraverso il settaggio della variabile di -ambiente \cmd{IFS}. +ma il comportamento è modificabile attraverso l'impostazione della variabile +di ambiente \cmd{IFS}. \begin{figure}[htb] \centering @@ -963,7 +962,7 @@ Normalmente \func{getopt} compie una permutazione degli elementi di \var{argv} così che alla fine della scansione gli elementi che non sono opzioni sono spostati in coda al vettore. Oltre a questa esistono altre due modalità di gestire gli elementi di \var{argv}; se \var{optstring} inizia con il carattere -\texttt{'+'} (o è settata la variabile di ambiente \macro{POSIXLY\_CORRECT}) +\texttt{'+'} (o è impostata la variabile di ambiente \macro{POSIXLY\_CORRECT}) la scansione viene fermata non appena si incontra un elemento che non è un'opzione. L'ultima modalità, usata quando un programma può gestire la mescolanza fra opzioni e argomenti, ma se li aspetta in un ordine definito, si @@ -1047,7 +1046,7 @@ anche altre: per una lista pi \hline \hline \macro{USER} & $\bullet$ & $\bullet$ & $\bullet$ & Nome utente\\ - \macro{LOGNAME} & $\bullet$ & $\bullet$ & $\bullet$ & Nome utente\\ + \macro{LOGNAME} & $\bullet$ & $\bullet$ & $\bullet$ & Nome di login\\ \macro{HOME} & $\bullet$ & $\bullet$ & $\bullet$ & Directory base dell'utente\\ \macro{LANG} & $\bullet$ & $\bullet$ & $\bullet$ & Localizzazione\\ @@ -1058,8 +1057,8 @@ anche altre: per una lista pi \macro{TERM} & $\bullet$ & $\bullet$ & $\bullet$ & Tipo di terminale\\ \macro{PAGER} & $\bullet$ & $\bullet$ & $\bullet$ & Programma per vedere i testi\\ - \macro{EDITOR} & $\bullet$ & $\bullet$ & $\bullet$ & Editor di default\\ - \macro{BROWSER} & $\bullet$ & $\bullet$ & $\bullet$ & Browser di default\\ + \macro{EDITOR} & $\bullet$ & $\bullet$ & $\bullet$ & Editor preferito\\ + \macro{BROWSER} & $\bullet$ & $\bullet$ & $\bullet$ & Browser preferito\\ \hline \end{tabular} \caption{Variabili di ambiente più comuni definite da vari standard.} @@ -1081,7 +1080,7 @@ il cui prototipo Oltre a questa funzione di lettura, che è l'unica definita dallo standard ANSI C, nell'evoluzione dei sistemi Unix ne sono state proposte altre, da -utilizzare per settare e per cancellare le variabili di ambiente. Uno schema +utilizzare per impostare e per cancellare le variabili di ambiente. Uno schema delle funzioni previste nei vari standard e disponibili in Linux è riportato in \ntab. @@ -1117,7 +1116,7 @@ ambiente, i loro prototipi sono i seguenti: \headdecl{stdlib.h} \funcdecl{int setenv(const char *name, const char *value, int overwrite)} - Setta la variabile di ambiente \param{name} al valore \param{value}. + Imposta la variabile di ambiente \param{name} al valore \param{value}. \funcdecl{int putenv(char *string)} Aggiunge la stringa \param{string} all'ambiente. @@ -1147,7 +1146,7 @@ immutata se uguale a zero. La seconda funzione prende come parametro una stringa analoga quella restituita da \func{getenv}, e sempre nella forma \var{NOME=valore}. Se la variabile specificata non esiste la stringa sarà aggiunta all'ambiente, se -invece esiste il suo valore sarà settato a quello specificato da +invece esiste il suo valore sarà impostato a quello specificato da \param{string}. Si tenga presente che, seguendo lo standard SUSv2, le \acr{glibc} successive alla versione 2.1.2 aggiungono\footnote{il comportamento è lo stesso delle vecchie \acr{libc4} e \acr{libc5}; nelle