\item[\errcode{EBADF}] il file descriptor non è valido.
\item[\errcode{EINVAL}] il socket ha già un indirizzo assegnato.
\item[\errcode{ENOTSOCK}] il file descriptor non è associato ad un socket.
- \item[\errcode{EACCESS}] si è cercato di usare una porta riservata senza
+ \item[\errcode{EACCES}] si è cercato di usare una porta riservata senza
sufficienti privilegi.
\end{errlist}}
\end{prototype}
\item[\errcode{EAGAIN}] non ci sono più porte locali libere.
\item[\errcode{EAFNOSUPPORT}] l'indirizzo non ha una famiglia di indirizzi
corretta nel relativo campo.
- \item[\errcode{EACCESS, EPERM}] si è tentato di eseguire una connessione ad
- un indirizzo broadcast senza che il socket fosse stato abilitato per il
- broadcast.
+ \item[\errcode{EACCES}, \errcode{EPERM}] si è tentato di eseguire una
+ connessione ad un indirizzo broadcast senza che il socket fosse stato
+ abilitato per il broadcast.
\end{errlist}
altri errori possibili sono: \errval{EFAULT}, \errval{EBADF},
\errval{ENOTSOCK}, \errval{EISCONN} e \errval{EADDRINUSE}.}
viene messo in attesa. Il prototipo della funzione è il seguente:
\begin{prototype}{sys/socket.h}
{int accept(int sockfd, struct sockaddr *addr, socklen\_t *addrlen)}
- Estrae la prima connessione relativa al socket \var{sockfd}
- in attesa sulla coda delle connessioni complete, che associa ad nuovo socket
- con le stesse caratteristiche di \var{sockfd} (restituito dalla funzione
- stessa). Il socket originale non viene toccato. Nella struttura
- \var{addr} e nella variabile \var{addrlen} vengono restituiti
- indirizzo e relativa lunghezza del client che si è connesso.
+ Accetta una connessione sul socket specificato.
+
\bodydesc{La funzione restituisce un numero di socket descriptor positivo in
caso di successo e -1 in caso di errore, nel qual caso la variabile
\var{errno} viene impostata ai seguenti valori:
come non bloccante (vedi \secref{sec:file_noblocking}), e non ci sono
connessioni in attesa di essere accettate.
\item[\errcode{EPERM}] Le regole del firewall non consentono la connessione.
- \item[\errcode{ENOBUFS, ENOMEM}] questo spesso significa che l'allocazione
- della memoria è limitata dai limiti sui buffer dei socket, non dalla
- memoria di sistema.
+ \item[\errcode{ENOBUFS}, \errcode{ENOMEM}] questo spesso significa che
+ l'allocazione della memoria è limitata dai limiti sui buffer dei socket,
+ non dalla memoria di sistema.
\end{errlist}
Inoltre possono essere restituiti gli errori di rete relativi al nuovo
socket come: \errval{EMFILE}, \errval{EINVAL}, \errval{ENOSR},
\errval{ERESTARTSYS}.}
\end{prototype}
+Estrae la prima connessione relativa al socket \var{sockfd} in attesa sulla
+coda delle connessioni complete, che associa ad nuovo socket con le stesse
+caratteristiche di \var{sockfd} (restituito dalla funzione stessa). Il socket
+originale non viene toccato. Nella struttura \var{addr} e nella variabile
+\var{addrlen} vengono restituiti indirizzo e relativa lunghezza del client che
+si è connesso.
+
La funzione può essere usata solo con socket che supportino la connessione
(cioè di tipo \const{SOCK\_STREAM}, \const{SOCK\_SEQPACKET} o
\const{SOCK\_RDM}). Per alcuni protocolli che richiedono una conferma
si è usato un file descriptor inesistente, o aperto in sola lettura per
scrivere, o viceversa, o si è cercato di eseguire un'operazione non
consentita per quel tipo di file descriptor.
-\item \errcode{EACCESS} \textit{Permission denied}. Permesso negato; l'accesso
+\item \errcode{EACCES} \textit{Permission denied}. Permesso negato; l'accesso
al file non è consentito: i permessi del file o della directory non
consentono l'operazione.
\item \errcode{ELOOP} \textit{Too many symbolic links encountered}. Ci sono
\const{MAP\_DENYWRITE} & In Linux viene ignorato per evitare
\textit{DoS}\index{DoS} (veniva usato per
segnalare che tentativi di scrittura sul file
- dovevano fallire con \errcode{ETXTBUSY}).\\
+ dovevano fallire con \errcode{ETXTBSY}).\\
\const{MAP\_EXECUTABLE}& Ignorato. \\
\const{MAP\_NORESERVE} & Si usa con \const{MAP\_PRIVATE}. Non riserva
delle pagine di swap ad uso del meccanismo di
o \var{oldpath} è una directory e \var{newpath} esiste e non è una
directory.
\end{errlist}
- ed inoltre \errval{EACCESS}, \errval{EPERM}, \errval{EMLINK},
+ ed inoltre \errval{EACCES}, \errval{EPERM}, \errval{EMLINK},
\errval{ENOENT}, \errval{ENOMEM}, \errval{EROFS}, \errval{ELOOP} e
\errval{ENOSPC}.}
\end{prototype}
\begin{errlist}
\item[\errcode{EEXIST}] Un file (o una directory) con quel nome esiste di
già.
- \item[\errcode{EACCESS}]
+ \item[\errcode{EACCES}]
Non c'è il permesso di scrittura per la directory in cui si vuole inserire
la nuova directory.
\item[\errcode{EMLINK}] La directory in cui si vuole creare la nuova
directory, oppure la directory che contiene \var{dirname} ha lo sticky bit
impostato e l'userid effettivo del processo non corrisponde al
proprietario della directory.
- \item[\errcode{EACCESS}] Non c'è il permesso di scrittura per la directory
+ \item[\errcode{EACCES}] Non c'è il permesso di scrittura per la directory
che contiene la directory che si vuole cancellare, o non c'è il permesso
di attraversare (esecuzione) una delle directory specificate in
\var{dirname}.
o un dipositivo.
\item[\errcode{EEXIST}] \param{pathname} esiste già o è un link simbolico.
\end{errlist}
- ed inoltre anche \errval{EFAULT}, \errval{EACCESS}, \errval{ENAMETOOLONG},
+ ed inoltre anche \errval{EFAULT}, \errval{EACCES}, \errval{ENAMETOOLONG},
\errval{ENOENT}, \errval{ENOTDIR}, \errval{ENOMEM}, \errval{ELOOP},
\errval{ENOSPC}, \errval{EROFS}.}
\end{functions}
\funcdecl{int mkfifo(const char *pathname, mode\_t mode)} Crea una fifo.
\bodydesc{La funzione restituisce zero in caso di successo e -1 per un
- errore, nel qual caso \var{errno} assumerà i valori \errval{EACCESS},
+ errore, nel qual caso \var{errno} assumerà i valori \errval{EACCES},
\errval{EEXIST}, \errval{ENAMETOOLONG}, \errval{ENOENT}, \errval{ENOSPC},
\errval{ENOTDIR} e \errval{EROFS}.}
\end{functions}
è nullo.
\item[\errcode{ERANGE}] L'argomento \var{size} è più piccolo della
lunghezza del pathname.
- \item[\errcode{EACCESS}] Manca il permesso di lettura o di ricerca su uno dei
+ \item[\errcode{EACCES}] Manca il permesso di lettura o di ricerca su uno dei
componenti del pathname (cioè su una delle directory superiori alla
corrente).
\end{errlist}}
nel qual caso \var{errno} assumerà i valori:
\begin{errlist}
\item[\errcode{ENOTDIR}] Non si è specificata una directory.
- \item[\errcode{EACCESS}] Manca il permesso di ricerca su uno dei componenti
+ \item[\errcode{EACCES}] Manca il permesso di ricerca su uno dei componenti
di \param{path}.
\end{errlist}
ed inoltre \errval{EFAULT}, \errval{ENAMETOOLONG}, \errval{ENOENT},
\item[\errcode{EEXIST}] Non è stato possibile generare un nome univoco.
\end{errlist}
ed inoltre \errval{EFAULT}, \errval{EMFILE}, \errval{ENFILE},
- \errval{ENOSPC}, \errval{EROFS} e \errval{EACCESS}.}
+ \errval{ENOSPC}, \errval{EROFS} e \errval{EACCES}.}
\end{prototype}
\noindent essa restituisce direttamente uno stream già aperto (in modalità
\code{r+b}, si veda \secref{sec:file_fopen}) e pronto per l'uso, che viene
\bodydesc{Le funzioni restituiscono 0 in caso di successo e -1 per un
errore, nel qual caso \var{errno} assumerà uno dei valori: \errval{EBADF},
\errval{ENOENT}, \errval{ENOTDIR}, \errval{ELOOP}, \errval{EFAULT},
- \errval{EACCESS}, \errval{ENOMEM}, \errval{ENAMETOOLONG}.}
+ \errval{EACCES}, \errval{ENOMEM}, \errval{ENAMETOOLONG}.}
\end{functions}
\noindent il loro comportamento è identico, solo che operano rispettivamente
su un file, su un link simbolico e su un file descriptor.
\bodydesc{La funzione restituisce 0 in caso di successo e -1 in caso di
errore, nel qual caso \var{errno} assumerà uno dei valori:
\begin{errlist}
- \item[\errcode{EACCESS}] non si ha il permesso di scrittura sul file.
+ \item[\errcode{EACCES}] non si ha il permesso di scrittura sul file.
\item[\errcode{ENOENT}] \param{filename} non esiste.
\end{errlist}}
\end{prototype}
%\bibliography{biblio}
\printindex
-\bibliographystyle{alpha}
+\bibliographystyle{ieeetr}
\bibliography{biblio}
\end{document}
attendendo la terminazione del processo ad essa associato.
\bodydesc{La funzione restituisce 0 in caso di successo e -1 in caso di
- errore; nel quel caso il valore di \func{errno} deriva dalle sottostanti
+ errore; nel quel caso il valore di \var{errno} deriva dalle sottostanti
chiamate.}
\end{prototype}
\noindent che oltre alla chiusura dello stream si incarica anche di attendere
dipende dal valore di \param{flag}, se questo è nullo la funzione si limita ad
effettuare una ricerca sugli oggetti esistenti, restituendo l'identificatore
se trova una corrispondenza, o fallendo con un errore di \errcode{ENOENT} se
-non esiste o di \errcode{EACCESS} se si sono specificati dei permessi non
+non esiste o di \errcode{EACCES} se si sono specificati dei permessi non
validi.
Se invece si vuole creare una nuova coda di messaggi \param{flag} non può
macro; la procedura da seguire è la seguente:
\begin{enumerate*}
\item Inizializzare un puntatore alla lista degli argomenti di tipo
- \type{va\_list} attraverso la macro \macro{va\_start}.
+ \macro{va\_list} attraverso la macro \macro{va\_start}.
\item Accedere ai vari argomenti opzionali con chiamate successive alla macro
\macro{va\_arg}, la prima chiamata restituirà il primo argomento, la seconda
il secondo e così via.
\ctyp{int} puntata da \var{status}).
Si tenga conto che nel caso di conclusione anomala il valore restituito da
-\macro{WTERMSIG} può essere confrontato con le costanti definite in
+\val{WTERMSIG} può essere confrontato con le costanti definite in
\file{signal.h} ed elencate in \tabref{tab:sig_signal_list}, e stampato usando
le apposite funzioni trattate in \secref{sec:sig_strsignal}.
directory specificate dalla variabile di ambiente \var{PATH}. Il file che
viene posto in esecuzione è il primo che viene trovato. Se si ha un errore
relativo a permessi di accesso insufficienti (cioè l'esecuzione della
-sottostante \func{execve} ritorna un \errcode{EACCESS}), la ricerca viene
+sottostante \func{execve} ritorna un \errcode{EACCES}), la ricerca viene
proseguita nelle eventuali ulteriori directory indicate in \var{PATH}; solo se
non viene trovato nessun altro file viene finalmente restituito
-\errcode{EACCESS}.
+\errcode{EACCES}.
Le altre quattro funzioni si limitano invece a cercare di eseguire il file
indicato dal parametro \var{path}, che viene interpretato come il
\item[\errcode{EINVAL}] il valore di \param{which} non è valido.
\item[\errcode{EPERM}] un processo senza i privilegi di amministratore ha
specificato un valore di \param{inc} negativo.
- \item[\errcode{EACCESS}] un processo senza i privilegi di amministratore ha
+ \item[\errcode{EACCES}] un processo senza i privilegi di amministratore ha
cercato di modificare la priorità di un processo di un altro utente.
\end{errlist}}
\end{prototype}
\begin{errlist}
\item[\errcode{ESRCH}] Il processo selezionato non esiste.
\item[\errcode{EPERM}] Il cambiamento non è consentito.
- \item[\errcode{EACCESS}] Il processo ha già eseguito una \func{exec}.
+ \item[\errcode{EACCES}] Il processo ha già eseguito una \func{exec}.
\item[\errcode{EINVAL}] Il valore di \param{pgid} è negativo.
\end{errlist}
}
\const{CSIZE} & Maschera per i bit usati per specificare la dimensione
del carattere inviato lungo la linea di trasmissione, i
valore ne indica la lunghezza (in bit), ed i valori
- possibili sono \const{CS5}, \const{CS6},
- \const{CS7} e \const{CS8}
+ possibili sono \val{CS5}, \val{CS6},
+ \val{CS7} e \val{CS8}
corrispondenti ad un analogo numero di bit.\\
\const{CBAUD} & Maschera dei bit (4+1) usati per impostare della velocità
della linea (il \textit{baud rate}) in ingresso.
Il primo passo (\texttt{\small 14--18}) è creare un \textit{socket} IPv4
(\const{AF\_INET}), di tipo TCP \const{SOCK\_STREAM}. La funzione
-\const{socket} ritorna il descrittore che viene usato per identificare il
+\func{socket} ritorna il descrittore che viene usato per identificare il
socket in tutte le chiamate successive. Nel caso la chiamata fallisca si
stampa un errore con la relativa routine e si esce.