File con tutti i codici di errore
[gapil.git] / errors.tex
1 \chapter{I codici di errore}
2 \label{cha:errors}
3
4 Si riportano in questa appendice tutti i codici di errore. Essi sono
5 accessibili attraverso l'inclusione del file di header \file{errno.h}, che
6 definisce anche la variabile globale \var{errno}. Per ogni errore definito
7 riporteremo la stringa stampata da \func{perror} ed una breve spiegazione. Si
8 tenga presente che spiegazioni più particolareggiate, qualora necessarie per
9 il caso specifico, possono essere trovate nella descrizione del prototipo
10 della funzione.
11
12 I codici di errore sono riportati come costanti di tipo \type{int}, i valori
13 delle costanti sono definiti da macro di preprocessore nel file citato, e
14 possono variare da architettura a architettura; è pertanto necessario
15 riferirsi ad essi tramite i nomi simbolici. Le funzioni \func{perror} e
16 \func{strerror} (vedi \secref{sec:intro_strerror}) possono essere usate per
17 ottene dei messaggi di errore.
18
19
20 \section{Gli errori dei file}
21 \label{sec:err_file_errors}
22
23 In questa sezione riassumeremo gli errori restituiti dalle funzioni di
24 libreria che operano sui file.
25
26 \begin{description}
27   
28 \item \macro{EPERM} \textit{Operation not permitted}. L'operazione non è
29   permessa: solo il proprietario del file o un processo con sufficienti
30   privilegi può eseguire l'operazione.
31   
32 \item \macro{ENOENT} \textit{No such file or directory}. Il file indicato dal
33   pathname non esiste: o una delle componenti non esiste o il pathname
34   contiene un link simbolico spezzato.
35   
36 \item \macro{EIO} \textit{Input/output error}. Errore di input/output: usato
37   per riportare errori hardware in lettura/scrittura (su un dispositivo).
38
39
40 \item \macro{ENXIO} \textit{No such device or address}. Device inesistente: il
41   sistema ha tentato di usare un dispositivo attraverso il file specificato,
42   ma non lo ha trovato. Può significare che il file di dispositivo non è
43   corretto, che il modulo relativo non è stato caricato nel kernel, o che il
44   dispositico è fisicamente assente o non funzionante.
45   
46 \item \macro{EBADF} \textit{Bad file descriptor}. File descriptor non valido:
47   si è usato un file descriptor inesistente, o aperto in sola lettura per
48   scrivere, o viceversa.
49
50
51 \item \macro{} \textit{}. 
52 \item \macro{} \textit{}. 
53 \item \macro{} \textit{}. 
54 \item \macro{} \textit{}. 
55 \item \macro{} \textit{}. 
56 \item \macro{} \textit{}. 
57 \item \macro{} \textit{}. 
58
59 \item \macro{EFAULT} una stringa passata come parametro è fuori dello spazio
60   di indirizzi del processo.
61 \item \macro{EACCESS} l'accesso al file non è consentito: o una delle
62   directory del pathname non consente la ricerca, o il file non esiste e non
63   si ha accesso in scrittura nella directory in cui lo si vuole creare.
64 \item \macro{ENAMETOOLONG} si è indicato un pathname troppo lungo.
65 \item \macro{ENOTDIR} un componente del pathname non è una directory.
66 \item \macro{ENOMEM} il kernel non ha a disposizione memoria sufficiente a
67   completare l'operazione. 
68 \item \macro{EMLINK} ci sono troppi link al file (il numero massimo è
69   specificato dalla variabile \macro{LINK\_MAX}, vedi
70   \secref{sec:xxx_limits}).
71 \item \macro{ELOOP} ci sono troppi link simbolici nella risoluzione di un
72   pathname.
73 \item \macro{ENOSPC} la directory in cui si vuole creare il link non ha
74   spazio per ulteriori voci.
75 \item \macro{EROFS} il file risiede su un filesystem read-only.
76
77 \end{description}
78
79 \section{Gli errori dei processi}
80 \label{sec:err_proc_errors}
81
82 In questa sezione riassumeremo gli errori restituiti dalle funzioni di
83 libreria che operano sui processi.
84
85 \begin{description}
86
87 \item \macro{ESRCH} \textit{No process matches the specified process ID}. Non
88   esiste un processo con il \acr{pid} specificato.
89 \item \macro{EINTR} \textit{Interrupted function call}. Una funzione di
90   libreria è stata interrotta. In genere questo avviene causa di un segnale
91   asincrono al processo che impedisce la conclusione della chiamata. In questo
92   caso è necessario ripetere la chiamata alla funzione. 
93 \item \macro{E2BIG} \textit{Argument list too long}. Lista degli argomenti
94   troppo lunga: è una condizione prevista da POSIX quando la lista degli
95   argomenti passata ad una delle funzioni \func{exec} occupa troppa memoria,
96   non può mai accadere in GNU/Linux.
97 \item \macro{} \textit{}. 
98 \item \macro{} \textit{}. 
99 \item \macro{} \textit{}. 
100
101 \end{description}
102