X-Git-Url: https://gapil.gnulinux.it/gitweb/?a=blobdiff_plain;f=process.tex;h=a43b81005e19a3d65055cb881dc364177937c05e;hb=5f2fc6b52b9ce702d4ba8902556eab9ec638f667;hp=4fc31e6783bdc9d99bee5595a800228ab29c716b;hpb=8e2e77dff8f3cffb28ddf982280dff6fc015eb19;p=gapil.git diff --git a/process.tex b/process.tex index 4fc31e6..a43b810 100644 --- a/process.tex +++ b/process.tex @@ -1,6 +1,6 @@ %% process.tex %% -%% Copyright (C) 2000-2012 Simone Piccardi. Permission is granted to +%% Copyright (C) 2000-2013 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", @@ -737,7 +737,7 @@ accedere. Solitamente un programma C viene suddiviso nei seguenti segmenti: Contiene il codice del programma, delle funzioni di librerie da esso utilizzate, e le costanti. Normalmente viene condiviso fra tutti i processi che eseguono lo stesso programma e nel caso delle librerie anche da processi - che eseguono altri programmi. + che eseguono altri programmi. Quando l'architettura hardware lo supporta viene marcato in sola lettura per evitare sovrascritture accidentali (o maliziose) che ne modifichino le @@ -1826,13 +1826,14 @@ comando da esso supportate. Si può notare che si è anzitutto (\texttt{\small 1}) disabilitata la stampa di messaggi di errore per opzioni non riconosciute, per poi passare al ciclo per -la verifica delle opzioni (\texttt{\small 2-27}); per ciascuna delle opzioni +la verifica delle opzioni (\texttt{\small 2--27}); per ciascuna delle opzioni possibili si è poi provveduto ad un'azione opportuna, ad esempio per le tre opzioni che prevedono un parametro si è effettuata la decodifica del medesimo, il cui indirizzo è contenuto nella variabile \var{optarg}), avvalorando la -relativa variabile (\texttt{\small 12-14}, \texttt{\small 15-17} e -\texttt{\small 18-20}). Completato il ciclo troveremo in \var{optind} l'indice -in \code{argv[]} del primo degli argomenti rimanenti nella linea di comando. +relativa variabile (\texttt{\small 12--14}, \texttt{\small 15--17} e +\texttt{\small 18--20}). Completato il ciclo troveremo in \var{optind} +l'indice in \code{argv[]} del primo degli argomenti rimanenti nella linea di +comando. Normalmente \func{getopt} compie una permutazione degli elementi di \param{argv} cosicché alla fine della scansione gli elementi che non sono @@ -1966,22 +1967,22 @@ queste ed ulteriori variabili si può ottenere con il comando \cmd{man 7 & \textbf{Linux} & \textbf{Descrizione} \\ \hline \hline - \texttt{USER} &$\bullet$&$\bullet$&$\bullet$& Nome utente\\ - \texttt{LOGNAME}&$\bullet$&$\bullet$&$\bullet$& Nome di login\\ + \texttt{USER} &$\bullet$&$\bullet$&$\bullet$& Nome utente.\\ + \texttt{LOGNAME}&$\bullet$&$\bullet$&$\bullet$& Nome di login.\\ \texttt{HOME} &$\bullet$&$\bullet$&$\bullet$& Directory base - dell'utente\\ - \texttt{LANG} &$\bullet$&$\bullet$&$\bullet$& Localizzazione\\ + dell'utente.\\ + \texttt{LANG} &$\bullet$&$\bullet$&$\bullet$& Localizzazione.\\ \texttt{PATH} &$\bullet$&$\bullet$&$\bullet$& Elenco delle directory - dei programmi\\ - \texttt{PWD} &$\bullet$&$\bullet$&$\bullet$& Directory corrente\\ - \texttt{SHELL} &$\bullet$&$\bullet$&$\bullet$& Shell in uso\\ - \texttt{TERM} &$\bullet$&$\bullet$&$\bullet$& Tipo di terminale\\ + dei programmi.\\ + \texttt{PWD} &$\bullet$&$\bullet$&$\bullet$& Directory corrente.\\ + \texttt{SHELL} &$\bullet$&$\bullet$&$\bullet$& Shell in uso.\\ + \texttt{TERM} &$\bullet$&$\bullet$&$\bullet$& Tipo di terminale.\\ \texttt{PAGER} &$\bullet$&$\bullet$&$\bullet$& Programma per vedere i - testi\\ - \texttt{EDITOR} &$\bullet$&$\bullet$&$\bullet$& Editor preferito\\ - \texttt{BROWSER}&$\bullet$&$\bullet$&$\bullet$& Browser preferito\\ + testi.\\ + \texttt{EDITOR} &$\bullet$&$\bullet$&$\bullet$& Editor preferito.\\ + \texttt{BROWSER}&$\bullet$&$\bullet$&$\bullet$& Browser preferito.\\ \texttt{TMPDIR} &$\bullet$&$\bullet$&$\bullet$& Directory dei file - temporanei\\ + temporanei.\\ \hline \end{tabular} \caption{Esempi delle variabili di ambiente più comuni definite da vari @@ -2205,6 +2206,10 @@ versione ``\textsl{sicura}'' da zero. % TODO opzioni in formato esteso +% TODO trattare il vettore ausiliario e getauxval (vedi +% http://lwn.net/Articles/519085/) + + \section{Problematiche di programmazione generica} \label{sec:proc_gen_prog} @@ -2694,30 +2699,26 @@ una variabile per poi ristamparne il contenuto leggendolo un byte alla volta. Il codice di detto programma, \file{endtest.c}, è nei sorgenti allegati, allora se lo eseguiamo su un normale PC compatibile, che è \textit{little endian} otterremo qualcosa del tipo: -\begin{Command} -[piccardi@gont sources]$ ./endtest -\end{Command} -%$ -\begin{Terminal} +\begin{Console} +[piccardi@gont sources]$ \textbf{./endtest} Using value ABCDEF01 val[0]= 1 val[1]=EF val[2]=CD val[3]=AB -\end{Terminal} +\end{Console} +%$ mentre su un vecchio Macintosh con PowerPC, che è \textit{big endian} avremo qualcosa del tipo: -\begin{Command} -piccardi@anarres:~/gapil/sources$ ./endtest -\end{Command} -%$ -\begin{Terminal} +\begin{Console} +piccardi@anarres:~/gapil/sources$ \textbf{./endtest} Using value ABCDEF01 val[0]=AB val[1]=CD val[2]=EF val[3]= 1 -\end{Terminal} +\end{Console} +%$ L'attenzione alla \textit{endianness} nella programmazione è importante, perché se si fanno assunzioni relative alla propria architettura non è detto che