modifiche varie + aggiunte sull'environment
authorSimone Piccardi <piccardi@gnulinux.it>
Sun, 18 Nov 2001 16:45:08 +0000 (16:45 +0000)
committerSimone Piccardi <piccardi@gnulinux.it>
Sun, 18 Nov 2001 16:45:08 +0000 (16:45 +0000)
fileunix.tex
gapil.tex
process.tex

index f53b821865556037e669af20d5eb5bfefeeabdea..8c33fa3b90613f16c9c6f499451c957cb6b2ddc7 100644 (file)
@@ -893,7 +893,7 @@ valori 
 \item[\macro{F\_GETFL}] ritorna il valore del \textit{file status flag},
   permette cioè di rileggere quei bit settati da \func{open} all'apertura del
   file che vengono memorizzati (quelli riportati nella prima e terza sezione
-  di \tabref{tab:file_open_flags}).
+  di \tabref{tab:file_open_flags}). 
 \item[\macro{F\_SETFL}] setta il \textit{file status flag} al valore
   specificato da \param{arg}, possono essere settati solo i bit riportati
   nella terza sezione di \tabref{tab:file_open_flags} (da verificare).
@@ -936,6 +936,7 @@ La maggior parte delle funzionalit
 poter essere affrontate in dettaglio a questo punto; saranno riprese più
 avanti quando affronteremo le problematiche ad esse relative.
 
+Per determinare le modalità di accesso inoltre può essere necessario usare la 
 
 \subsection{La funzione \func{ioctl}}
 \label{sec:file_ioctl}
index 3b8ed0bce59169bbb4fd74946df4440205a300a8..db59c387330052925efbead5d9814320ff4b9def 100644 (file)
--- a/gapil.tex
+++ b/gapil.tex
@@ -1,4 +1,4 @@
-%%
+%%  
 %% GaPiL : Guida alla Programmazione in Linux
 %%
 %% S. Piccardi Oct. 2000
index 4b896d84a9ad984ac4d8367af6a47f8003128a58..aac25b13ed16c0731c2728e15a77d0cb72b87063 100644 (file)
@@ -969,7 +969,7 @@ variabili che normalmente sono definite dal sistema, 
 Per convenzione le stringhe che definiscono l'ambiente sono tutte del tipo
 \textsl{\texttt{nome=valore}}. Inoltre alcune variabili, come quelle elencate
 in \curfig, sono definite dal sistema per essere usate da diversi programmi e
-funzioni: per queste c'è l'ulteriore convezione di usare nomi espressi in
+funzioni: per queste c'è l'ulteriore convenzione di usare nomi espressi in
 caratteri maiuscoli.
 
 Il kernel non usa mai queste variabili, il loro uso e la loro interpretazione è
@@ -987,8 +987,42 @@ l'editor preferito da invocare in caso di necessit
 
 Gli standard POSIX e XPG3 definiscono alcune di queste variabili (le più
 comuni), come riportato in \ntab. GNU/Linux le supporta tutte e ne definisce
-anche altre: per una lista parziale si può controllare \cmd{man environ}.
+anche altre: per una lista più completa si può controllare \cmd{man environ}.
 
+\begin{table}[htb]
+  \centering
+  \begin{tabular}[c]{|l|c|c|c|p{6cm}|}
+    \hline
+    \textbf{Variabile} & POSIX & XPG & Linux & \textbf{Descrizione} \\
+    \hline
+    \hline
+    \macro{USER} & $\bullet$ & $\bullet$ & $\bullet$ & \\
+    \macro{LOGNAME} & $\bullet$ & $\bullet$ & $\bullet$ & \\
+    \macro{HOME} & $\bullet$ & $\bullet$ & $\bullet$ & \\
+    \macro{LANG} & $\bullet$ & $\bullet$ & $\bullet$ & \\
+    \macro{PATH} & $\bullet$ & $\bullet$ & $\bullet$ & \\
+    \macro{PWD} & $\bullet$ & $\bullet$ & $\bullet$ & \\
+    \macro{SHELL} & $\bullet$ & $\bullet$ & $\bullet$ & \\
+    \macro{TERM} & $\bullet$ & $\bullet$ & $\bullet$ & \\
+    \macro{PAGER} & $\bullet$ & $\bullet$ & $\bullet$ & \\
+    \macro{EDITOR} & $\bullet$ & $\bullet$ & $\bullet$ & \\
+    \macro{BROWSER} & $\bullet$ & $\bullet$ & $\bullet$ & \\    
+  \end{tabular}
+  \caption{Variabile di ambiente più comuni definite da vari standard}
+  \label{tab:proc_env_var}
+\end{table}
+
+Lo standard ANSI C, pur lasciando alle varie implementazioni i contenuti,
+definisce la funzione \func{getenv} che permetta di ottenere i valori delle
+varibili di ambiente, il suo prototipo è:
+
+\begin{prototype}{stdlib.h}{char *getenv(const char *name)}
+  Esamina l'ambiente del processo cercando una stringa che corrisponda a
+  quella specificata da \param{name}. 
+  
+  La funzione \macro{NULL} se non trova nulla, o il puntatore alla stringa che
+  corrisponde (di solito nella forma \texttt{NOME=valore}).
+\end{prototype}
 
 
 
@@ -1073,6 +1107,27 @@ efficiente, quello dell'uscita in caso di errore.
 
 Il C però non consente di effettuare un salto ad una label definita in
 un'altra funzione, per cui se l'errore avviene in funzioni profondamente
-annidate occorre usare la funzione \func{longjump}. 
+annidate occorre usare la funzioni \func{setjmp} e \func{longjmp}, il cui
+prototipo è:
+\begin{functions}
+  \headdecl{setjmp.h}
+  \funcdecl{void setjmp(jmp\_buf env)}
+  
+  La funzione salva il contesto dello stack in \param{env} per un successivo
+  uso da parte di \func{longjmp}. Il contesto viene invalidato se la routine
+  che ha chiamato \func{setjmp} ritorna.
+  
+  La funzione ritorna zero quando è chiamata direttamente e un valore diverso
+  da zero quando ritorna da una chiamata di \func{longjmp} che usa il contesto
+  salvato in predenza.
+
+  \funcdecl{void longjmp(jmp\_buf env, int val)}
+  
+  Ripristina il contesto dello stack salvato dall'ultima chiamata di
+  \func{setjmp} con l'argomento \param{env}. Il programma prosegue dal ritorno
+  di \func{setjmp} con un valore \param{val}. Il valore di \param{val} deve
+  essere diverso da zero, se viene specficato 0 sarà usato 1 al suo posto.
 
+  La funzione non ritorna.
+\end{functions}