Lavoro fatto a casa senza ADSL, correzioni multiple agli indici, documentato
[gapil.git] / errors.tex
1 %% errors.tex
2 %%
3 %% Copyright (C) 2000-2005 Simone Piccardi.  Permission is granted to
4 %% copy, distribute and/or modify this document under the terms of the GNU Free
5 %% Documentation License, Version 1.1 or any later version published by the
6 %% Free Software Foundation; with the Invariant Sections being "Un preambolo",
7 %% with no Front-Cover Texts, and with no Back-Cover Texts.  A copy of the
8 %% license is included in the section entitled "GNU Free Documentation
9 %% License".
10 %%
11 \chapter{I codici di errore}
12 \label{cha:errors}
13
14 Si riportano in questa appendice tutti i codici di errore. Essi sono
15 accessibili attraverso l'inclusione del file di header \file{errno.h}, che
16 definisce anche la variabile globale \var{errno}. Per ogni errore definito
17 riporteremo la stringa stampata da \func{perror} ed una breve spiegazione. Si
18 tenga presente che spiegazioni più particolareggiate, qualora necessarie per
19 il caso specifico, possono essere trovate nella descrizione del prototipo
20 della funzione.
21
22 I codici di errore sono riportati come costanti di tipo \ctyp{int}, i valori
23 delle costanti sono definiti da macro di preprocessore nel file citato, e
24 possono variare da architettura a architettura; è pertanto necessario
25 riferirsi ad essi tramite i nomi simbolici. Le funzioni \func{perror} e
26 \func{strerror} (vedi sez.~\ref{sec:sys_strerror}) possono essere usate per
27 ottenere dei messaggi di errore più espliciti.
28
29
30 \section{Gli errori dei file}
31 \label{sec:err_file_errors}
32
33 In questa sezione sono raccolti i codici restituiti dalle funzioni di libreria
34 attinenti ad errori che riguardano operazioni specifiche relative alla
35 gestione dei file.
36
37 \begin{description}
38 \item \errcode{EPERM} \textit{Operation not permitted}. L'operazione non è
39   permessa: solo il proprietario del file o un processo con sufficienti
40   privilegi può eseguire l'operazione.
41 \item \errcode{ENOENT} \textit{No such file or directory}. Il file indicato
42   dal \itindex{pathname}\textit{pathname} non esiste: o una delle
43   componenti non esiste o il \textit{pathname} contiene un link simbolico
44   spezzato.  Errore tipico di un riferimento ad un file che si suppone
45   erroneamente essere esistente.
46 \item \errcode{EIO} \textit{Input/output error}. Errore di input/output: usato
47   per riportare errori hardware in lettura/scrittura su un dispositivo.
48 \item \errcode{ENXIO} \textit{No such device or address}. Dispositivo
49   inesistente: il sistema ha tentato di usare un dispositivo attraverso il
50   file specificato, ma non lo ha trovato. Può significare che il file di
51   dispositivo non è corretto, che il modulo relativo non è stato caricato nel
52   kernel, o che il dispositivo è fisicamente assente o non funzionante.
53 \item \errcode{ENOEXEC} \textit{Invalid executable file format}. Il file non ha
54   un formato eseguibile, è un errore riscontrato dalle funzioni \func{exec}.
55 \item \errcode{EBADF} \textit{Bad file descriptor}. File descriptor non valido:
56   si è usato un file descriptor inesistente, o aperto in sola lettura per
57   scrivere, o viceversa, o si è cercato di eseguire un'operazione non
58   consentita per quel tipo di file descriptor.
59 \item \errcode{EACCES} \textit{Permission denied}. Permesso negato; l'accesso
60   al file non è consentito: i permessi del file o della directory non
61   consentono l'operazione.
62 \item \errcode{ELOOP} \textit{Too many symbolic links encountered}. Ci sono
63   troppi link simbolici nella risoluzione di un
64   \itindex{pathname}\textit{pathname}.
65 \item \errcode{ENAMETOOLONG} \textit{File name too long}. Si è indicato un
66   \itindex{pathname}\textit{pathname} troppo lungo.
67 \item \errcode{ENOTBLK} \textit{Block device required}. Si è specificato un
68   file che non è un \textit{block device} in un contesto in cui era necessario
69   specificare un \textit{block device} (ad esempio si è tentato di montare un
70   file ordinario).
71 \item \errcode{EEXIST} \textit{File exists}. Si è specificato un file esistente
72   in un contesto in cui ha senso solo specificare un nuovo file.
73 \item \errcode{EBUSY} \textit{Resource busy}. Una risorsa di sistema che non
74   può essere condivisa è occupata. Ad esempio si è tentato di cancellare la
75   directory su cui si è montato un filesystem.
76 \item \errcode{EXDEV} \textit{Cross-device link}. Si è tentato di creare un
77   link diretto che attraversa due filesystem differenti.
78 \item \errcode{ENODEV} \textit{No such device}. Si è indicato un tipo di device
79   sbagliato ad una funzione che ne richiede uno specifico.
80 \item \errcode{ENOTDIR} \textit{Not a directory}. Si è specificato un file che
81   non è una directory in una operazione che richiede una directory.
82 \item \errcode{EISDIR} \textit{Is a directory}. Il file specificato è una
83   directory, non può essere aperto in scrittura, né si possono creare o
84   rimuovere link diretti ad essa.
85 \item \errcode{EMFILE} \textit{Too many open files}. Il processo corrente ha
86   troppi file aperti e non può aprirne altri. Anche i descrittori duplicati
87   vengono tenuti in conto\footnote{Il numero massimo di file aperti è
88     controllabile dal sistema, in Linux si può usare il comando
89     \cmd{ulimit}.}.
90 \item \errcode{ENFILE} \textit{File table overflow}. Ci sono troppi file aperti
91   nel sistema. 
92 \item \errcode{ENOTTY} \textit{Not a terminal}. Si è tentata una operazione di
93   controllo relativa ad un terminale su un file che non lo è.
94 \item \errcode{ETXTBSY} \textit{Text file busy}. Si è cercato di eseguire un
95   file che è aperto in scrittura, o scrivere un file che è in esecuzione. 
96 \item \errcode{EFBIG} \textit{File too big}. Si è ecceduto il limite imposto
97   dal sistema sulla dimensione massima che un file può avere.
98 \item \errcode{ENOSPC} \textit{No space left on device}. la directory in cui si
99   vuole creare il link non ha spazio per ulteriori voci.
100 \item \errcode{ESPIPE} \textit{Invalid seek operation}. 
101 \item \errcode{EROFS} \textit{Read-only file system}.  il file risiede su un
102   filesystem read-only.
103 \item \errcode{EMLINK} \textit{Too many links}. Ci sono troppi link al file (il
104    numero massimo è specificato dalla variabile \const{LINK\_MAX}, vedi
105   sez.~\ref{sec:sys_limits}).
106 \item \errcode{EPIPE} \textit{Broken pipe}. Non c'è un processo che stia
107   leggendo l'altro capo della pipe. Ogni funzione che restituisce questo
108   errore genera anche un segnale \const{SIGPIPE}, la cui azione predefinita è
109   terminare il programma; pertanto non si potrà vedere questo errore fintanto
110   che \const{SIGPIPE} non viene gestito o bloccato.
111 \item \errcode{ENOTEMPTY} \textit{Directory not empty}. La directory non è
112   vuota quando l'operazione richiede che lo sia. È l'errore tipico che si ha
113   quando si cerca di cancellare una directory contenente dei file.
114 \item \errcode{EUSERS} \textit{Too many users}. Troppi utenti, il sistema delle
115   quote rileva troppi utenti nel sistema.
116 \item \errcode{EDQUOT} \textit{Quota exceeded}. Si è ecceduta la quota di disco
117   dell'utente.
118 \item \errcode{ESTALE} \textit{Stale NFS file handle}. Indica un problema
119   interno a NFS causato da cambiamenti del filesystem del sistema remoto. Per
120   recuperare questa condizione in genere è necessario smontare e rimontare il
121   filesystem NFS.
122 \item \errcode{EREMOTE} \textit{Object is remote}. Si è fatto un tentativo di
123   montare via NFS un filesystem remoto con un nome  che già specifica un
124   filesystem montato via NFS. 
125 \item \errcode{ENOLCK} \textit{No locks available}. È usato dalle utilità per
126   la gestione del file lock; non viene generato da un sistema GNU, ma può
127   risultare da un'operazione su un server NFS di un altro sistema.
128 \item \errcode{EFTYPE} \textit{Inappropriate file type or format}. Il file è
129   di tipo sbagliato rispetto all'operazione richiesta o un file di dati ha un
130   formato sbagliato. Alcuni sistemi restituiscono questo errore quando si
131   cerca di impostare lo \itindex{sticky~bit} \textit{sticky bit} su un file che
132   non è una directory.
133 \end{description}
134
135
136
137 \section{Gli errori dei processi}
138 \label{sec:err_proc_errors}
139
140 In questa sezione sono raccolti i codici restituiti dalle funzioni di libreria
141 attinenti ad errori che riguardano operazioni specifiche relative alla
142 gestione dei processi.
143
144 \begin{description}
145 \item \errcode{ESRCH} \textit{No process matches the specified process ID}. Non
146   esiste un processo con il \acr{pid} specificato.
147 \item \errcode{E2BIG} \textit{Argument list too long}. Lista degli argomenti
148   troppo lunga: è una condizione prevista da POSIX quando la lista degli
149   argomenti passata ad una delle funzioni \func{exec} occupa troppa memoria,
150   non può mai accadere in GNU/Linux.
151 \item \errcode{ECHILD} \textit{There are no child processes}. Non esiste un
152   processo figlio. Viene rilevato dalle funzioni per la gestione dei processi
153   figli. 
154 %\item \errcode{EPROCLIM} \textit{}.  Il limite dell'utente per nuovi processi
155 %  sarà ecceduto alla prossima \func{fork}. (non credo esista in Linux)
156 % TODO verificare EPROCLIM
157 \end{description}
158
159
160 \section{Gli errori di rete}
161 \label{sec:err_network}
162
163 In questa sezione sono raccolti i codici restituiti dalle funzioni di libreria
164 attinenti ad errori che riguardano operazioni specifiche relative alla
165 gestione dei socket e delle connessioni di rete.
166
167
168 \begin{description}
169 \item \errcode{ENOTSOCK} \textit{Socket operation on non-socket}. Si è tentata
170   un'operazione su un file descriptor che non è un socket quando invece era
171   richiesto un socket.
172 \item \errcode{EMSGSIZE} \textit{Message too long}. Le dimensioni di un
173   messaggio inviato su un socket sono eccedono la massima lunghezza supportata.
174 \item \errcode{EPROTOTYPE} \textit{Protocol wrong type for socket}. Protocollo
175   sbagliato per il socket. Il socket usato non supporta il protocollo di
176   comunicazione richiesto. 
177 \item \errcode{ENOPROTOOPT} \textit{Protocol not available}. Protocollo non
178   disponibile. Si è richiesta un'opzione per il socket non disponibile con il
179   protocollo usato.
180 \item \errcode{EPROTONOSUPPORT} \textit{Protocol not supported}. Protocollo non
181   supportato. Il tipo di socket non supporta il protocollo richiesto (un
182   probabile errore nella specificazione del protocollo).
183 \item \errcode{ESOCKTNOSUPPORT} \textit{Socket type not supported}. Socket non
184   supportato. Il tipo di socket scelto non è supportato.
185 \item \errcode{EOPNOTSUPP} \textit{Operation not supported on transport
186     endpoint}. L'operazione richiesta non è supportata. Alcune funzioni non
187   hanno senso per tutti i tipi di socket, ed altre non sono implementate per
188   tutti i protocolli di trasmissione. Questo errore quando un socket non
189   supporta una particolare operazione, e costituisce una indicazione generica
190   che il server non sa cosa fare per la chiamata effettuata.
191 \item \errcode{EPFNOSUPPORT} \textit{Protocol family not supported}. Famiglia
192   di protocolli non supportata. La famiglia di protocolli richiesta non è
193   supportata.
194 \item \errcode{EAFNOSUPPORT} \textit{Address family not supported by protocol}.
195   Famiglia di indirizzi non supportata. La famiglia di indirizzi richiesta non
196   è supportata, o è inconsistente con il protocollo usato dal socket.
197 \item \errcode{EADDRINUSE} \textit{Address already in use}. L'indirizzo del
198   socket richiesto è gia utilizzato (ad esempio si è richiesto il \func{bind}
199   per una porta già in uso).
200 \item \errcode{EADDRNOTAVAIL} \textit{Cannot assign requested address}.
201   L'indirizzo richiesto non è disponibile (ad esempio si è cercato di dare al
202   socket un nome che non corrisponde al nome della stazione locale).
203 \item \errcode{ENETDOWN} \textit{Network is down}. L'operazione sul socket è
204   fallita perché la rete è sconnessa.
205 \item \errcode{ENETUNREACH} \textit{Network is unreachable}. L'operazione è
206   fallita perché l'indirizzo richiesto è irraggiungibile (ad esempio la
207   sottorete della stazione remota è irraggiungibile).
208 \item \errcode{ENETRESET} \textit{Network dropped connection because of reset}.
209   Una connessione è stata cancellata perché l'host remoto è caduto.
210 \item \errcode{ECONNABORTED} \textit{Software caused connection abort}. Una
211   connessione è stata abortita localmente. 
212 \item \errcode{ECONNRESET} \textit{Connection reset by peer}. Una connessione è
213   stata chiusa per ragioni fuori dal controllo dell'host locale, come il
214   riavvio di una macchina remota o un qualche errore non recuperabile sul
215   protocollo.
216 \item \errcode{ENOBUFS} \textit{No buffer space available}. Tutti i buffer per
217   le operazioni di I/O del kernel sono occupati. In generale questo errore è
218   sinonimo di \errcode{ENOMEM}, ma attiene alle funzioni di input/output. In
219   caso di operazioni sulla rete si può ottenere questo errore invece
220   dell'altro.
221 \item \errcode{EISCONN} \textit{Transport endpoint is already connected}. Si è
222   tentato di connettere un socket che è gia connesso.
223 \item \errcode{ENOTCONN} \textit{Transport endpoint is not connected}. Il
224   socket non è connesso a niente. Si ottiene questo errore quando si cerca di
225   trasmettere dati su un socket senza avere specificato in precedenza la loro
226   destinazione. Nel caso di socket senza connessione (ad esempio socket UDP)
227   l'errore che si ottiene è \errcode{EDESTADDRREQ}.
228 \item \errcode{EDESTADDRREQ} \textit{Destination address required}. Non c'è un
229   indirizzo di destinazione predefinito per il socket. Si ottiene questo
230   errore mandando dato su un socket senza connessione senza averne prima
231   specificato una destinazione.
232 \item \errcode{ESHUTDOWN} \textit{Cannot send after transport endpoint
233     shutdown}. Il socket su cui si cerca di inviare dei dati ha avuto uno
234   shutdown.
235 \item \errcode{ETOOMANYREFS} \textit{Too many references: cannot splice}. La
236   glibc dice ???
237 \item \errcode{ETIMEDOUT} \textit{Connection timed out}. Un'operazione sul
238   socket non ha avuto risposta entro il periodo di timeout.
239 \item \errcode{ECONNREFUSED} \textit{Connection refused}. Un host remoto ha
240   rifiutato la connessione (in genere dipende dal fatto che non c'è un server
241   per soddisfare il servizio richiesto).  
242 \item \errcode{EHOSTDOWN} \textit{Host is down}. L'host remoto di una
243   connessione è giù.
244 \item \errcode{EHOSTUNREACH} \textit{No route to host}.  L'host remoto di una
245   connessione non è raggiungibile.
246 \end{description}
247
248 \section{Errori generici}
249
250 In questa sezione sono raccolti i codici restituiti dalle funzioni di libreria
251 attinenti ad errori generici, si trovano qui tutti i codici di errore non
252 specificati nelle sezioni precedenti.
253
254 \begin{description}
255 \item \errcode{EINTR} \textit{Interrupted function call}. Una funzione di
256   libreria è stata interrotta. In genere questo avviene causa di un segnale
257   asincrono al processo che impedisce la conclusione della chiamata. In questo
258   caso è necessario ripetere la chiamata alla funzione. 
259 \item \errcode{ENOMEM} \textit{No memory available}. Il kernel non è in grado
260   di allocare ulteriore memoria per completare l'operazione richiesta.
261 \item \errcode{EDEADLK} \textit{Deadlock avoided}. L'allocazione di una
262   risorsa avrebbe causato un \textit{deadlock}\itindex{deadlock}. Non sempre
263   il sistema è in grado di riconoscere queste situazioni, nel qual caso si
264   avrebbe il blocco.
265 \item \errcode{EFAULT} \textit{Bad address}. Una stringa passata come argomento
266   è fuori dello spazio di indirizzi del processo, in genere questa situazione
267   provoca l'emissione di un segnale di \textit{segment violation}
268   (\const{SIGSEGV}).
269 \item \errcode{EINVAL} \textit{Invalid argument}. Errore utilizzato per
270   segnalare vari tipi di problemi dovuti all'aver passato un argomento
271   sbagliato ad una funzione di libreria.
272 \item \errcode{EDOM} \textit{Domain error}. È usato dalle funzioni matematiche
273   quando il valore di un argomento è al di fuori dell'intervallo in cui sono
274   definite. 
275 \item \errcode{ERANGE} \textit{Range error}. È usato dalle funzioni matematiche
276   quando il risultato non è rappresentabile a causa di un overflow o di un
277   underflow.
278 \item \errcode{EAGAIN} \textit{Resource temporarily unavailable}. La funzione è
279   fallita ma potrebbe funzionare se la chiamata fosse ripetuta. Questo errore
280   accade in due tipologie di situazioni:
281   \begin{itemize}
282   \item Si è effettuata un'operazione che si sarebbe bloccata su un oggetto
283     che è stato posto in modalità non bloccante. Nei vecchi sistemi questo era
284     un codice diverso, \errcode{EWOULDBLOCK}. In genere questo ha a che fare
285     con file o socket, per i quali si può usare la funzione \func{select} per
286     vedere quando l'operazione richiesta (lettura, scrittura o connessione)
287     diventa possibile.
288   \item Indica la carenza di una risorsa di sistema che non è al momento
289     disponibile (ad esempio \func{fork} può fallire con questo errore se si è
290     esaurito il numero di processi contemporanei disponibili). La ripetizione
291     della chiamata in un periodo successivo, in cui la carenza della risorsa
292     richiesta può essersi attenuata, può avere successo. Questo tipo di
293     carenza è spesso indice di qualcosa che non va nel sistema, è pertanto
294     opportuno segnalare esplicitamente questo tipo di errori.
295   \end{itemize}
296 \item \errcode{EWOULDBLOCK} \textit{Operation would block}. In Linux è identico
297   a \errcode{EAGAIN}.
298 \item \errcode{EINPROGRESS} \textit{Operation now in progress}. Operazione in
299   corso. Un'operazione che non può essere completata immediatamente è stata
300   avviata su un oggetto posto in modalità non-bloccante. Questo errore viene
301   riportato per operazioni che si dovrebbero sempre bloccare (come per una
302   \func{connect}) e che pertanto non possono riportare \errcode{EAGAIN},
303   l'errore indica che l'operazione è stata avviata correttamente e occorrerà
304   del tempo perché si possa completare. La ripetizione della chiamata darebbe
305   luogo ad un errore \errcode{EALREADY}.
306 \item \errcode{EALREADY} \textit{Operation already in progress}. L'operazione è
307   già in corso. Si è tentata un'operazione già in corso su un oggetto posto in
308   modalità non-bloccante.
309 \item \errcode{ENOSYS} \textit{Function not implemented}. Indica che la
310   funzione non è supportata o nelle librerie del C o nel kernel. Può dipendere
311   sia dalla mancanza di una implementazione, che dal fatto che non si è
312   abilitato l'opportuno supporto nel kernel; nel caso di Linux questo può
313   voler dire anche che un modulo necessario non è stato caricato nel sistema.
314 \item \errcode{ENOTSUP} \textit{Not supported}. Una funzione ritorna questo
315   errore quando gli argomenti sono validi ma l'operazione richiesta non è
316   supportata. Questo significa che la funzione non implementa quel particolare
317   comando o opzione o che, in caso di oggetti specifici (file descriptor o
318   altro) non è in grado di supportare i parametri richiesti.
319 \item \errcode{EILSEQ} \textit{Illegal byte sequence}. Nella decodifica di un
320   carattere esteso si è avuta una sequenza errata o incompleta o si è
321   specificato un valore non valido.
322 \end{description}
323
324
325 \begin{description}
326 %\item \errcode{EBADRPC} \textit{}. 
327 %\item \errcode{ERPCMISMATCH} \textit{}. 
328 %\item \errcode{EPROGUNAVAIL} \textit{}. 
329 %\item \errcode{EPROGMISMATCH} \textit{}. 
330 %\item \errcode{EPROCUNAVAIL} \textit{}. 
331 %\item \errcode{EAUTH} \textit{}. 
332 %\item \errcode{ENEEDAUTH} \textit{}. 
333 %\item \errcode{EBACKGROUND} \textit{}. 
334 %\item \errcode{EDIED} \textit{}. 
335 %\item \errcode{ED} \textit{}. 
336 %\item \errcode{EGREGIOUS} \textit{}. 
337 %\item \errcode{EIEIO} \textit{}. 
338 %\item \errcode{EGRATUITOUS} \textit{}. 
339 \item \errcode{EBADMSG} \textit{Not a data message}. 
340 \item \errcode{EIDRM} \textit{Identifier removed}. Indica che l'oggetto del
341   \textit{SysV IPC} cui si fa riferimento è stato cancellato.
342 \item \errcode{EMULTIHOP} \textit{Multihop attempted}. 
343 \item \errcode{ENODATA} \textit{No data available}. 
344 \item \errcode{ENOLINK} \textit{Link has been severed}. 
345 \item \errcode{ENOMSG} \textit{No message of desired type}. Indica che una
346   coda di messaggi del \textit{SysV IPC} non è presente nessun messaggio del
347   tipo desiderato.
348 \item \errcode{ENOSR} \textit{Out of streams resources}. 
349 \item \errcode{ENOSTR} \textit{Device not a stream}. 
350 \item \errcode{EOVERFLOW} \textit{Value too large for defined data type}. Si è
351   chiesta la lettura di un dato dal \textit{SysV IPC} con \const{IPC\_STAT} ma
352   il valore eccede la dimensione usata nel buffer di lettura.
353 \item \errcode{EPROTO} \textit{Protocol error}. C'è stato un errore nel 
354   protocollo di rete usato dal socket.
355 \item \errcode{ETIME} \textit{Timer expired}. 
356 \end{description}
357
358
359
360
361
362 % \section{Errori del kernel}
363 % \label{sec:err_kernel_err}
364
365 % In questa sezione sono raccolti i codici di errore interni del kernel. Non
366 % sono usati dalle funzioni di libreria, ma vengono riportati da alcune system
367 % call 
368 % TODO verificare i dettagli degli errori del kernel, eventualmente cassare.
369
370 % \begin{description}
371 % \item \errcode{ERESTART} \textit{Interrupted system call should be restarted}. 
372 % \item \errcode{ECHRNG} \textit{Channel number out of range}. 
373 % \item \errcode{EL2NSYNC} \textit{Level 2 not synchronized}. 
374 % \item \errcode{EL3HLT} \textit{Level 3 halted}. 
375 % \item \errcode{EL3RST} \textit{Level 3 reset}. 
376 % \item \errcode{ELNRNG} \textit{Link number out of range}. 
377 % \item \errcode{EUNATCH} \textit{Protocol driver not attached}. 
378 % \item \errcode{ENOCSI} \textit{No CSI structure available}. 
379 % \item \errcode{EL2HLT} \textit{Level 2 halted}. 
380 % \item \errcode{EBADE} \textit{Invalid exchange}. 
381 % \item \errcode{EBADR} \textit{Invalid request descriptor}. 
382 % \item \errcode{EXFULL} \textit{Exchange full}. 
383 % \item \errcode{ENOANO} \textit{No anode}. 
384 % \item \errcode{EBADRQC} \textit{Invalid request code}. 
385 % \item \errcode{EBADSLT} \textit{Invalid slot}. 
386 % \item \errcode{EDEADLOCK} Identico a \errcode{EDEADLK}. 
387 % \item \errcode{EBFONT} \textit{Bad font file format}. 
388 % \item \errcode{ENONET} \textit{Machine is not on the network}. 
389 % \item \errcode{ENOPKG} \textit{Package not installed}. 
390 % \item \errcode{EADV} \textit{Advertise error}. 
391 % \item \errcode{ESRMNT} \textit{Srmount error}. 
392 % \item \errcode{ECOMM} \textit{Communication error on send}. 
393 % \item \errcode{EDOTDOT} \textit{RFS specific error}. 
394 % \item \errcode{ENOTUNIQ} \textit{Name not unique on network}. 
395 % \item \errcode{EBADFD} \textit{File descriptor in bad state}. 
396 % \item \errcode{EREMCHG} \textit{Remote address changed}. 
397 % \item \errcode{ELIBACC} \textit{Can not access a needed shared library}. 
398 % \item \errcode{ELIBBAD} \textit{Accessing a corrupted shared library}. 
399 % \item \errcode{ELIBSCN} \textit{.lib section in a.out corrupted}. 
400 % \item \errcode{ELIBMAX} \textit{Attempting to link in too many shared
401 %     libraries}.
402 % \item \errcode{ELIBEXEC} \textit{Cannot exec a shared library directly}. 
403 % \item \errcode{ESTRPIPE} \textit{Streams pipe error}. 
404 % \item \errcode{EUCLEAN} \textit{Structure needs cleaning}. 
405 % \item \errcode{ENAVAIL} \textit{No XENIX semaphores available}. 
406 % \item \errcode{EISNAM} \textit{Is a named type file}. 
407 % \item \errcode{EREMOTEIO} \textit{Remote I/O error}. 
408 % \item \errcode{ENOMEDIUM} \textit{No medium found}. 
409 % \item \errcode{EMEDIUMTYPE} \textit{Wrong medium type}. 
410 % \end{description}
411
412
413
414 %%% Local Variables: 
415 %%% mode: latex
416 %%% TeX-master: "gapil"
417 %%% End: