\bodydesc{La funzione in caso di successo restituisce il numero di file
descriptor (anche nullo) che sono attivi, e -1 in caso di errore, nel qual
- caso \var{errno} viene impostata ai valori:
+ caso \var{errno} assumerà uno dei valori:
\begin{errlist}
\item[\macro{EBADF}] Si è specificato un file descriptor sbagliato in uno
degli insiemi.
\bodydesc{La funzione restituisce il numero di file descriptor con attività in
caso di successo, o 0 se c'è stato un timeout; in caso di errore viene
- restituito -1 ed \var{errno} viene impostata ai valori:
+ restituito -1 ed \var{errno} assumerà uno dei valori:
\begin{errlist}
\item[\macro{EBADF}] Si è specificato un file descriptor sbagliato in uno
degli insiemi.
\bodydesc{La funzione in caso di successo restituisce il numero di file
descriptor (anche nullo) che sono attivi, e -1 in caso di errore, nel qual
- caso \var{errno} viene impostata ai valori:
+ caso \var{errno} assumerà uno dei valori:
\begin{errlist}
\item[\macro{EBADF}] Si è specificato un file descriptor sbagliato in uno
degli insiemi.
\param{aiocbp}.
\bodydesc{Le funzioni restituiscono 0 in caso di successo, e -1 in caso di
- errore, nel qual caso \var{errno} viene impostata ai valori:
+ errore, nel qual caso \var{errno} assumerà uno dei valori:
\begin{errlist}
\item[\macro{EBADF}] Si è specificato un file descriptor sbagliato.
\item[\macro{ENOSYS}] La funzione non è implementata.
operazioni specificate da \param{list}.
\bodydesc{La funzione restituisce 0 se una (o più) operazioni sono state
- completate, e -1 in caso di errore nel qual caso \var{errno} viene
- impostata ai valori:
+ completate, e -1 in caso di errore nel qual caso \var{errno} assumerà uno
+ dei valori:
\begin{errlist}
\item[\macro{EAGAIN}] Nessuna operazione è stata completata entro
\param{timeout}.
secondo la modalità \param{mode}.
\bodydesc{La funzione restituisce 0 in caso di successo, e -1 in caso di
- errore, nel qual caso \var{errno} viene impostata ai valori:
+ errore, nel qual caso \var{errno} assumerà uno dei valori:
\begin{errlist}
\item[\macro{EAGAIN}] Nessuna operazione è stata completata entro
\param{timeout}.
specificati da \param{vector}.
\bodydesc{Le funzioni restituiscono il numero di byte letti o scritti in
- caso di successo, e -1 in caso di errore, nel qual caso \var{errno} viene
- impostata ai valori:
+ caso di successo, e -1 in caso di errore, nel qual caso \var{errno}
+ assumerà uno dei valori:
\begin{errlist}
\item[\macro{EBADF}] si è specificato un file descriptor sbagliato.
\item[\macro{EINVAL}] si è specificato un valore non valido per uno degli
\bodydesc{La funzione restituisce il puntatore alla zona di memoria mappata
in caso di successo, e \macro{MAP\_FAILED} (-1) in caso di errore, nel
- qual caso \var{errno} viene impostata ai valori:
+ qual caso \var{errno} assumerà uno dei valori:
\begin{errlist}
\item[\macro{EBADF}] Il file descriptor non è valido, e non si è usato
\macro{MAP\_ANONYMOUS}.
Sincronizza i contenuti di una sezione di un file mappato in memoria.
\bodydesc{La funzione restituisce 0 in caso di successo, e -1 in caso di
- errore nel qual caso \var{errno} viene impostata ai valori:
+ errore nel qual caso \var{errno} assumerà uno dei valori:
\begin{errlist}
\item[\macro{EINVAL}] O \param{start} non è multiplo di \macro{PAGESIZE},
o si è specificato un valore non valido per \param{flags}.
Rilascia la mappatura sulla sezione di memoria specificata.
\bodydesc{La funzione restituisce 0 in caso di successo, e -1 in caso di
- errore nel qual caso \var{errno} viene impostata ai valori:
+ errore nel qual caso \var{errno} assumerà uno dei valori:
\begin{errlist}
\item[\macro{EINVAL}] L'intervallo specificato non ricade in una zona
precedentemente mappata.
\param{oldpath}.
\bodydesc{La funzione restituisce zero in caso di successo e -1 per un
- errore, nel qual caso la variabile \var{errno} restituisce i valori:
+ errore, nel qual caso la variabile \var{errno} assumerà i valori:
\begin{errlist}
\item[\macro{EPERM}] il filesystem che contiene \param{newpath} non supporta
i link simbolici.
\bodydesc{La funzione restituisce il numero di caratteri letti dentro
\var{buff} o -1 per un errore, nel qual caso la variabile
- \var{errno} viene impostata a:
+ \var{errno} assumerà i valori:
\begin{errlist}
\item[\macro{EINVAL}] \param{path} non è un link simbolico o \param{size}
non è positiva.
Cambia la directory di lavoro corrente in \param{pathname}.
\bodydesc{La funzione restituisce 0 in caso di successo e -1 per un errore,
- nel qual caso \var{errno} viene impostata a:
+ nel qual caso \var{errno} assumerà i valori:
\begin{errlist}
\item[\macro{ENOTDIR}] Non si è specificata una directory.
\item[\macro{EACCESS}] Manca il permesso di ricerca su uno dei componenti di
pathname.
\bodydesc{La funzione restituisce zero in caso di successo e -1 per un
- errore, in caso di errore \var{errno} viene impostata ai valori
- \macro{EBADF} o \macro{EACCES}.}
+ errore, in caso di errore \var{errno} assumerà i valori \macro{EBADF} o
+ \macro{EACCES}.}
\end{prototype}
\noindent anche in questo caso \param{fd} deve essere un file descriptor
valido che fa riferimento ad una directory. Inoltre l'unico errore di accesso
\bodydesc{La funzione ritorna il puntatore allo stream associato al file
temporaneo in caso di successo e \macro{NULL} in caso di errore, nel qual
- caso \var{errno} viene impostata a
+ caso \var{errno} assumerà i valori:
\begin{errlist}
\item[\macro{EINTR}] La funzione è stata interrotta da un segnale.
\item[\macro{EEXIST}] Non è stato possibile generare un nome univoco.
\param{template}.
\bodydesc{La funzione ritorna il puntatore \param{template} in caso di
- successo e \macro{NULL} in caso di errore, nel qual caso \var{errno} viene
- impostata a:
+ successo e \macro{NULL} in caso di errore, nel qual caso \var{errno}
+ assumerà i valori:
\begin{errlist}
\item[\macro{EINVAL}] \param{template} non termina con \code{XXXXXX}.
\end{errlist}}
finali di \param{template}.
\bodydesc{La funzione ritorna il file descriptor in caso successo e
- -1 in caso di errore, nel qual caso \var{errno} viene impostata a:
+ -1 in caso di errore, nel qual caso \var{errno} assumerà i valori:
\begin{errlist}
\item[\macro{EINVAL}] \param{template} non termina con \code{XXXXXX}.
\item[\macro{EEXIST}] non è riuscita a creare un file temporano, il
\code{XXXXXX} finali di \param{template}.
\bodydesc{La funzione ritorna il puntatore al nome della directory in caso
- successo e \macro{NULL} in caso di errore, nel qual caso \var{errno} viene
- impostata a:
+ successo e \macro{NULL} in caso di errore, nel qual caso \var{errno}
+ assumerà i valori:
\begin{errlist}
\item[\macro{EINVAL}] \param{template} non termina con \code{XXXXXX}.
\end{errlist}
eccetto che si usa con un file aperto, specificato tramite il suo file
descriptor \var{filedes}.
- \bodydesc{Le funzioni restituiscono zero in caso di successo e -1 per
- un errore, in caso di errore \var{errno} può assumere uno dei
- valori: \macro{EBADF}, \macro{ENOENT}, \macro{ENOTDIR},
- \macro{ELOOP}, \macro{EFAULT}, \macro{EACCESS}, \macro{ENOMEM},
- \macro{ENAMETOOLONG}.}
+ \bodydesc{Le funzioni restituiscono 0 in caso di successo e -1 per un
+ errore, nel qual caso \var{errno} assumerà uno dei valori: \macro{EBADF},
+ \macro{ENOENT}, \macro{ENOTDIR}, \macro{ELOOP}, \macro{EFAULT},
+ \macro{EACCESS}, \macro{ENOMEM}, \macro{ENAMETOOLONG}.}
\end{functions}
\noindent il loro comportamento è identico, solo che operano rispettivamente
su un file, su un link simbolico e su un file descriptor.
\param{filename} secondo i campi \var{actime} e \var{modtime} di
\param{times}. Se questa è \macro{NULL} allora viene usato il tempo corrente.
-\bodydesc{La funzione restituisce zero in caso di successo e -1 in caso
- di errore, nel qual caso \var{errno} è impostata opportunamente.
-\begin{errlist}
-\item[\macro{EACCESS}] non si ha il permesso di scrittura sul file.
-\item[\macro{ENOENT}] \param{filename} non esiste.
-\end{errlist}}
+\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[\macro{EACCESS}] non si ha il permesso di scrittura sul file.
+ \item[\macro{ENOENT}] \param{filename} non esiste.
+ \end{errlist}}
\end{prototype}
La struttura \var{utimebuf} usata da \func{utime} è definita come:
\begin{prototype}{unistd.h}
{int access(const char *pathname, int mode)}
-Verifica i permessi di accesso, indicati da \var{mode}, per il file indicato
-da \var{pathname}.
+Verifica i permessi di accesso, indicati da \param{mode}, per il file indicato
+da \param{pathname}.
-\bodydesc{La funzione ritorna 0 se l'accesso è consentito, -1 altrimenti; in
- quest'ultimo caso la variabile \var{errno} viene impostata secondo i codici
- di errore: \macro{EACCES}, \macro{EROFS}, \macro{EFAULT}, \macro{EINVAL},
- \macro{ENAMETOOLONG}, \macro{ENOENT}, \macro{ENOTDIR}, \macro{ELOOP},
- \macro{EIO}.}
+\bodydesc{La funzione ritorna 0 se l'accesso è consentito, -1 se l'accesso non
+ è consentito ed in caso di errore; nel qual caso la variabile \var{errno}
+ assumerà i valori:
+ \begin{errlist}
+ \item[\macro{EINVAL}] il valore di \param{mode} non è valido.
+ \item[\macro{EACCES}] l'accesso al file non è consentito, o non si ha il
+ permesso di attraversare una delle directory di \param{pathname}.
+ \item[\macro{EROFS}] si è richiesto l'accesso in scrittura per un file su un
+ filesystem montato in sola lettura.
+ \end{errlist}
+ ed inoltre \macro{EFAULT}, \macro{ENAMETOOLONG}, \macro{ENOENT},
+ \macro{ENOTDIR}, \macro{ELOOP}, \macro{EIO}.}
\end{prototype}
I valori possibili per l'argomento \param{mode} sono esprimibili come
specificati dalle variabili \var{owner} e \var{group}.
\bodydesc{Le funzioni restituiscono zero in caso di successo e -1 per
- un errore, in caso di errore \var{errno} viene impostata ai valori:
+ un errore, in caso di errore \var{errno} può assumere i valori:
\begin{errlist}
\item[\macro{EPERM}] L'userid effettivo non corrisponde a quello del
proprietario del file o non è zero, o utente e gruppo non sono validi
\param{path}.
\bodydesc{La funzione restituisce zero in caso di successo e -1 per
- un errore, in caso di errore \var{errno} viene impostata ai valori:
+ un errore, in caso di errore \var{errno} può assumere i valori:
\begin{errlist}
\item[\macro{EPERM}] L'userid effettivo del processo non è zero.
\end{errlist}
Apre il file specificato da \param{path} associandolo allo stream
specificato da \param{stream}, se questo è già aperto prima lo chiude.
- \bodydesc{Le funzioni ritornano un puntatore valido in caso di
- successo e \macro{NULL} in caso di errore, in tal caso \var{errno}
- viene impostata al valore ricevuto dalla funzione sottostante di cui è
- fallita l'esecuzione.
+ \bodydesc{Le funzioni ritornano un puntatore valido in caso di successo e
+ \macro{NULL} in caso di errore, in tal caso \var{errno} assumerà il valore
+ ricevuto dalla funzione sottostante di cui è fallita l'esecuzione.
Gli errori pertanto possono essere quelli di \code{malloc} per tutte
e tre le funzioni, quelli \func{open} per \func{fopen}, quelli di
Dato che le funzioni dell'interfaccia degli stream sono funzioni di libreria
che si appoggiano a delle system call, esse non impostano direttamente la
-variabile \var{errno}, che mantiene il valore impostato dalla system call che ha
-riportato l'errore.
+variabile \var{errno}, che mantiene il valore impostato dalla system call che
+ha riportato l'errore.
Siccome la condizione di end-of-file è anch'essa segnalata come errore, nasce
il problema di come distinguerla da un errore effettivo; basarsi solo sul
valore di ritorno della funzione e controllare il valore di \var{errno}
-infatti non basta, dato che quest'ultimo potrebbe essere stato impostato in una
-altra occasione, (si veda \secref{sec:sys_errno} per i dettagli del
+infatti non basta, dato che quest'ultimo potrebbe essere stato impostato in
+una altra occasione, (si veda \secref{sec:sys_errno} per i dettagli del
funzionamento di \var{errno}).
Per questo motivo tutte le implementazioni delle librerie standard
Legge il file descriptor sottostante lo stream \param{stream}.
\bodydesc{Restituisce il numero del file descriptor in caso di successo, e
- -1 qualora \param{stream} non sia valido, nel qual caso imposta \var{errno}
- a \macro{EBADF}.}
+ -1 qualora \param{stream} non sia valido, nel qual caso imposta
+ \var{errno} a \macro{EBADF}.}
\end{prototype}
\noindent ed in questo modo diventa possibile usare direttamente \func{fcntl}.
specificati da \var{mode}.
\bodydesc{La funzione ritorna il file descriptor in caso di successo e -1 in
- caso di errore. In questo caso la variabile \var{errno} viene impostata ad
- uno dei valori:
+ caso di errore. In questo caso la variabile \var{errno} assumerà uno dei
+ valori:
\begin{errlist}
\item[\macro{EEXIST}] \var{pathname} esiste e si è specificato
\macro{O\_CREAT} e \macro{O\_EXCL}.
Chiude il descrittore \var{fd}.
\bodydesc{La funzione ritorna 0 in caso di successo e -1 in caso di errore,
- ed in questo caso \var{errno} è impostata ai valori:
+ ed in questo caso \var{errno} assumerà uno dei valori:
\begin{errlist}
\item[\macro{EBADF}] \var{fd} non è un descrittore valido.
\item[\macro{EINTR}] la funzione è stata interrotta da un segnale.
Imposta la posizione attuale nel file.
\bodydesc{La funzione ritorna valore della posizione corrente in caso di
- successo e -1 in caso di errore nel qual caso \var{errno} viene impostata ad
- uno dei valori:
+ successo e -1 in caso di errore nel qual caso \var{errno} assumerà uno dei
+ valori:
\begin{errlist}
\item[\macro{ESPIPE}] \param{fd} è una pipe, un socket o una fifo.
\item[\macro{EINVAL}] \param{whence} non è un valore valido.
Cerca di leggere \var{count} byte dal file \var{fd} al buffer \var{buf}.
\bodydesc{La funzione ritorna il numero di byte letti in caso di successo e
- -1 in caso di errore, nel qual caso \var{errno} viene impostata ad uno dei
- valori:
+ -1 in caso di errore, nel qual caso \var{errno} assumerà uno dei valori:
\begin{errlist}
\item[\macro{EINTR}] la funzione è stata interrotta da un segnale prima di
aver potuto leggere qualsiasi dato.
\var{offset}, nel buffer \var{buf}.
\bodydesc{La funzione ritorna il numero di byte letti in caso di successo e -1
- in caso di errore, nel qual caso \var{errno} viene impostata secondo i valori
- già visti per \func{read} e \func{lseek}.}
+ in caso di errore, nel qual caso \var{errno} assumerà i valori già visti per
+ \func{read} e \func{lseek}.}
\end{prototype}
\noindent che però diventa accessibile solo con la definizione della macro:
\begin{verbatim}
Scrive \var{count} byte dal buffer \var{buf} sul file \var{fd}.
\bodydesc{La funzione ritorna il numero di byte scritti in caso di successo
- e -1 in caso di errore, nel qual caso \var{errno} viene impostata ad uno dei
- valori:
+ e -1 in caso di errore, nel qual caso \var{errno} assumerà uno dei valori:
\begin{errlist}
\item[\macro{EINVAL}] \var{fd} è connesso ad un oggetto che non consente la
scrittura.
\var{count} byte dal buffer \var{buf}.
\bodydesc{La funzione ritorna il numero di byte letti in caso di successo e -1
- in caso di errore, nel qual caso \var{errno} viene impostata secondo i valori
- già visti per \func{write} e \func{lseek}.}
+ in caso di errore, nel qual caso \var{errno} assumerà i valori già visti per
+ \func{write} e \func{lseek}.}
\end{prototype}
\noindent e per essa valgono le stesse considerazioni fatte per \func{pread}.
Crea una copia del file descriptor \param{oldfd}.
\bodydesc{La funzione ritorna il nuovo file descriptor in caso di successo e
- -1 in caso di errore, nel qual caso \var{errno} viene impostata ad uno dei
+ -1 in caso di errore, nel qual caso \var{errno} assumerà uno dei
valori:
\begin{errlist}
\item[\macro{EBADF}] \param{oldfd} non è un file aperto.
Rende \param{newfd} una copia del file descriptor \param{oldfd}.
\bodydesc{La funzione ritorna il nuovo file descriptor in caso di successo e
- -1 in caso di errore, nel qual caso \var{errno} viene impostata ad uno dei
- valori:
+ -1 in caso di errore, nel qual caso \var{errno} assumerà uno dei valori:
\begin{errlist}
\item[\macro{EBADF}] \param{oldfd} non è un file aperto o \param{newfd} ha un
valore fuori dall'intervallo consentito per i file descriptor.
sul file \param{fd}.
\bodydesc{La funzione ha valori di ritorno diversi a seconda
- dell'operazione. In caso di errore il valore di ritorno è -1 e la
- variabile \var{errno} viene impostata ad un opportuno codice, quelli validi
- in generale sono:
+ dell'operazione. In caso di errore il valore di ritorno è sempre -1 ed il
+ codice dell'errore è restituito nella variabile \var{errno}; i codici
+ possibili dipendono dal tipo di operazione, l'unico valido in generale è:
\begin{errlist}
- \item[\macro{EBADF}] \param{oldfd} non è un file aperto.
+ \item[\macro{EBADF}] \param{fd} non è un file aperto.
\end{errlist}}
\end{functions}
\item[\macro{F\_SETLK}] richiede il file lock specificato da \param{lock} se
\var{l\_type} è \macro{F\_RDLCK} o \macro{F\_WRLLCK} o lo rilascia se
\var{l\_type} è \macro{F\_UNLCK}. Se il lock è tenuto da qualcun'altro
- ritorna immediatamente restituendo -1 e imposta \var{errno} a \macro{EACCES} o
- \macro{EAGAIN} (per i dettagli sul \textit{file locking} vedi
+ ritorna immediatamente restituendo -1 e imposta \var{errno} a \macro{EACCES}
+ o \macro{EAGAIN} (per i dettagli sul \textit{file locking} vedi
\secref{sec:file_locking}).
\item[\macro{F\_SETLKW}] identica a \macro{F\_SETLK} eccetto per il fatto che
la funzione non ritorna subito ma attende che il blocco sia rilasciato. Se
\bodydesc{La funzione nella maggior parte dei casi ritorna 0, alcune
operazioni usano però il valore di ritorno per restituire informazioni. In
- caso di errore viene sempre restituito -1 e \var{errno} viene impostata ad
- uno dei valori seguenti:
+ caso di errore viene sempre restituito -1 ed \var{errno} assumerà uno dei
+ valori:
\begin{errlist}
\item[\macro{ENOTTY}] il file \param{fd} non è associato con un device, o la
richiesta non è applicabile all'oggetto a cui fa riferimento \param{fd}.
Restituisce una chiave per identificare un oggetto del System V IPC.
\bodydesc{La funzione restituisce la chiave in caso di successo e -1
- altrimenti, nel qual caso \var{errno} viene settata ad uno dei possibili
- codici di errore di \func{stat}.}
+ altrimenti, nel qual caso \var{errno} sarà uno dei possibili codici di
+ errore di \func{stat}.}
\end{functions}
La funzione determina un valore della chiave sulla base di \param{pathname},
Restituisce l'identificatore di una cosa di messaggi.
\bodydesc{La funzione restituisce l'identificatore (un intero positivo) o -1
- in caso di errore, nel qual caso \var{errno} viene settato ad uno dei
- valori:
+ in caso di errore, nel qual caso \var{errno} assumerà uno dei valori:
\begin{errlist}
\item[\macro{EACCES}] Il processo chiamante non ha i privilegi per accedere
alla coda richiesta.
Esegue l'operazione specificata da \param{cmd} sulla coda \param{msqid}.
\bodydesc{La funzione restituisce 0 in caso di successo o -1 in caso di
- errore, nel qual caso \var{errno} viene settato a:
+ errore, nel qual caso \var{errno} assumerà uno dei valori:
\begin{errlist}
\item[\macro{EACCES}] Si è richiesto \macro{IPC\_STAT} ma processo chiamante
non ha i privilegi di lettura sulla coda.
Invia un messaggio sulla coda \param{msqid}.
\bodydesc{La funzione restituisce 0, e -1 in caso di errore, nel qual caso
- \var{errno} viene settata a:
+ \var{errno} assumerà uno dei valori:
\begin{errlist}
\item[\macro{EACCES}] Non si hanno i privilegi di accesso sulla coda.
\item[\macro{EIDRM}] La coda è stata cancellata.
Legge un messaggio dalla coda \param{msqid}.
\bodydesc{La funzione restituisce il numero di byte letti in caso di
- successo, e -1 in caso di errore, nel qual caso \var{errno} viene settata
- a:
+ successo, e -1 in caso di errore, nel qual caso \var{errno} assumerà uno
+ dei valori:
\begin{errlist}
\item[\macro{EACCES}] Non si hanno i privilegi di accesso sulla coda.
\item[\macro{EIDRM}] La coda è stata cancellata.
funzione ritorna immediatamente con un errore \macro{ENOMSG}. Altrimenti la
funzione ritorna normalmente non appena viene inserito un messaggio del tipo
desiderato, oppure ritorna con errore qualora la coda sia rimossa (con
-\var{errno} settata a \macro{EIDRM}) o se il processo viene interrotto da un
-segnale (con \var{errno} settata a \macro{EINTR}).
+\var{errno} impostata a \macro{EIDRM}) o se il processo viene interrotto da un
+segnale (con \var{errno} impostata a \macro{EINTR}).
Una volta completata con successo l'estrazione del messaggio dalla coda, la
funzione aggiorna i dati mantenuti in \var{msqid\_ds}, in particolare vengono
Restituisce l'identificatore di un insieme di semafori.
\bodydesc{La funzione restituisce l'identificatore (un intero positivo) o -1
- in caso di errore, nel qual caso \var{errno} viene settato agli stessi
- valori visti per \func{msgget}.}
+ in caso di errore, nel qual caso \var{errno} assumerà gli stessi valori
+ visti per \func{msgget}.}
\end{functions}
La funzione è del tutto analoga a \func{msgget}, solo che in questo caso
\bodydesc{La funzione restituisce in caso di successo un valore positivo
quanto usata con tre argomenti ed un valore nullo quando usata con
- quattro. In caso di errore restituisce -1, ed \var{errno} viene settata a:
+ quattro. In caso di errore restituisce -1, ed \var{errno} assumerà uno dei
+ valori:
\begin{errlist}
\item[\macro{EACCES}] Il processo non ha i privilegi per eseguire
l'operazione richiesta.
Restituisce l'identificatore di una memoria condivisa.
\bodydesc{La funzione restituisce l'identificatore (un intero positivo) o -1
- in caso di errore, nel qual caso \var{errno} viene settato agli stessi
- valori visti per \func{msgget}.}
+ in caso di errore, nel qual caso \var{errno} assumerà gli stessi valori
+ visti per \func{msgget}.}
\end{functions}
La funzione, come \func{semget}, è del tutto analoga a \func{msgget}, ed
programma.
\bodydesc{La funzione restituisce 0 in caso di successo e -1 in caso di
- fallimento, \var{errno} non viene impostata.}
+ fallimento, \var{errno} non viene modificata.}
\end{prototype}
\noindent la funzione richiede come argomento l'indirizzo della opportuna
funzione di pulizia da chiamare all'uscita, che non deve prendere argomenti e
rispetto a quello di registrazione.
\bodydesc{La funzione restituisce 0 in caso di successo e -1 in caso di
- fallimento, \var{errno} non viene impostata.}
+ fallimento, \var{errno} non viene modificata.}
\end{prototype}
In questo caso la funzione da chiamare prende due parametri, il primo dei
La funzione restituisce il puntatore alla zona di memoria allocata in caso
di successo e \macro{NULL} in caso di fallimento, nel qual caso
- \var{errno} viene impostata a \macro{ENOMEM}.
+ \var{errno} assumerà il valore \macro{ENOMEM}.
\funcdecl{void *malloc(size\_t size)}
Alloca \var{size} byte nello heap. La memoria non viene inizializzata.
La funzione restituisce il puntatore alla zona di memoria allocata in caso
di successo e \macro{NULL} in caso di fallimento, nel qual caso
- \var{errno} viene impostata a \macro{ENOMEM}.
+ \var{errno} assumerà il valore \macro{ENOMEM}.
\funcdecl{void *realloc(void *ptr, size\_t size)}
Cambia la dimensione del blocco allocato all'indirizzo \var{ptr}
portandola a \var{size}.
La funzione restituisce il puntatore alla zona di memoria allocata in caso
di successo e \macro{NULL} in caso di fallimento, nel qual caso
- \var{errno} viene impostata a \macro{ENOMEM}.
+ \var{errno} assumerà il valore \macro{ENOMEM}.
\funcdecl{void free(void *ptr)}
Disalloca lo spazio di memoria puntato da \var{ptr}.
La funzione restituisce il puntatore alla zona di memoria allocata in caso
di successo e \macro{NULL} in caso di fallimento, nel qual caso
- \var{errno} viene impostata a \macro{ENOMEM}.
+ \var{errno} assumerà il valore \macro{ENOMEM}.
\end{prototype}
\noindent ma in questo caso non è più necessario liberare la memoria (e quindi
non esiste un analogo della \func{free}) in quanto essa viene rilasciata
\var{end\_data\_segment}.
La funzione restituisce 0 in caso di successo e -1 in caso di
- fallimento, nel qual caso \var{errno} viene impostata a \macro{ENOMEM}.
+ fallimento, nel qual caso \var{errno} assumerà il valore \macro{ENOMEM}.
\funcdecl{void *sbrk(ptrdiff\_t increment)} Incrementa lo spazio dati di un
programma di \var{increment}. Un valore zero restituisce l'attuale posizione
La funzione restituisce il puntatore all'inizio della nuova zona di memoria
allocata in caso di successo e \macro{NULL} in caso di fallimento, nel qual
- caso \macro{errno} viene impostata a \macro{ENOMEM}.
+ caso \macro{errno} assumerà il valore \macro{ENOMEM}.
\end{functions}
\noindent in genere si usa \func{sbrk} con un valore zero per ottenere
l'attuale posizione della fine del segmento dati.
\bodydesc{Entrambe le funzioni ritornano 0 in caso di successo e -1 in
- caso di errore, nel qual caso \var{errno} è impostata ad uno dei
+ caso di errore, nel qual caso \var{errno} assumerà uno dei
valori seguenti:
\begin{errlist}
\item[\macro{ENOMEM}] alcuni indirizzi dell'intervallo specificato non
argomento. I parametri successivi consentono di specificare gli argomenti a
linea di comando e l'ambiente ricevuti dal nuovo processo.
-\bodydesc{Queste funzioni ritornano solo in caso di errore, restituendo
- -1; nel qual caso \var{errno} andrà ad assumere i valori visti in
- precedenza per \func{execve}.}
+\bodydesc{Queste funzioni ritornano solo in caso di errore, restituendo -1;
+ nel qual caso \var{errno} assumerà i valori visti in precedenza per
+ \func{execve}.}
\end{functions}
Per capire meglio le differenze fra le funzioni della famiglia si può fare
\param{size}.
\bodydesc{La funzione restituisce il numero di gruppi letti in caso di
- successo e -1 in caso di fallimento, nel qual caso \var{errno} viene
- impostata a:
+ successo e -1 in caso di fallimento, nel qual caso \var{errno} assumerà
+ i valori:
\begin{errlist}
\item[\macro{EFAULT}] \param{list} non ha un indirizzo valido.
\item[\macro{EINVAL}] il valore di \param{size} è diverso da zero ma
supplementari del processo ai valori specificati in \param{list}.
\bodydesc{La funzione restituisce 0 in caso di successo e -1 in caso di
- fallimento, nel qual caso \var{errno} viene impostata a:
+ fallimento, nel qual caso \var{errno} assumerà i valori:
\begin{errlist}
\item[\macro{EFAULT}] \param{list} non ha un indirizzo valido.
\item[\macro{EPERM}] il processo non ha i privilegi di amministratore.
aggiungendo il gruppo addizionale \param{group}.
\bodydesc{La funzione restituisce 0 in caso di successo e -1 in caso di
- fallimento, nel qual caso \var{errno} viene impostata agli stessi valori di
+ fallimento, nel qual caso \var{errno} assumerà gli stessi valori di
\func{setgroups} più \macro{ENOMEM} quando non c'è memoria sufficiente per
allocare lo spazio per informazioni dei gruppi.}
\end{functions}
processo appena creato appartiene sempre allo stesso raggruppamento e alla
stessa sessione del padre.
-Ciascun gruppo di processi ha sempre un processo principale, il
-\textit{process leader}, che è quello che è identificato dall'avere il suo
-\acr{pgid} uguale al \acr{pid}, per
+Ciascun gruppo di processi ha sempre un processo principale, il cosiddetto
+\textit{process leader}, che è identificato dall'avere un \acr{pgid} uguale al
+suo \acr{pid}, in genere questo è il primo processo del gruppo, che si
+incarica di lanciare tutti gli altri. Un nuovo gruppo si crea con la funzione
+\func{setpgrp},\footnote{questa è la definizione di POSIX.1, BSD definisce una
+ funzione con lo stesso nome, che però è identica a \func{setpgid}; nelle
+ \acr{glibc} viene sempre usata sempre questa definizione, a meno di non
+ richiedere esplicitamente la compatibilità all'indietro con BSD, definendo
+ la macro \macro{\_BSD\_SOURCE}.} il cui prototipo è:
+\begin{prototype}{unistd.h}{int setpgrp(void)}
+ Modifica il \acr{pgid} al valore del \acr{pid} del processo corrente.
+
+ \bodydesc{La funzione restituisce il valore del nuovo \textit{process
+ group}.}
+\end{prototype}
+
+La funzione, assegnando al \acr{pgid} il valore del \acr{pid} processo
+corrente, rende questo \textit{process leader} di un nuovo gruppo, tutti i
+successivi processi da esso creati apparterranno (a meno di non cambiare di
+nuovo il \acr{pgid}) al nuovo gruppo. È possibile invece spostare un processo
+da un gruppo ad un altro con la funzione \func{setpgid}, il cui prototipo è:
+\begin{prototype}{unistd.h}{int setpgid(pid\_t pid, pid\_t pgid)}
+ Assegna al \acr{pgid} del processo \param{pid} il valore \param{pgid}.
+
+ \bodydesc{La funzione ritorna il valore del nuovo \textit{process group}, e
+ -1 in caso di errore, nel qual caso \var{errno} assumerà i valori:
+ \begin{errlist}
+ \item[\macro{ESRCH}] Il processo selezionato non esiste.
+ \item[\macro{EPERM}] Il processo selezionato non fa parte della stessa
+ sessione del processo corrente.
+ \end{errlist}
+ }
+\end{prototype}
+
+
+
+
La differenza fra i due identificatori è che un processo
può cambiare \acr{pgid} soltanto ad un valore che corrisponda al
processo specificato con \param{pid}.
\bodydesc{La funzione restituisce 0 in caso di successo e -1 in caso di
- errore nel qual caso \var{errno} può assumere i valori:
+ errore nel qual caso \var{errno} assumerà uno dei valori:
\begin{errlist}
\item[\macro{EINVAL}] Il segnale specificato non esiste.
\item[\macro{ESRCH}] Il processo selezionato non esiste.
\param{value} sul timer specificato da \func{which}.
\bodydesc{La funzione restituisce 0 in caso di successo e -1 in caso di
- errore, nel qual caso \var{errno} può assumere i valori \macro{EINVAL} e
+ errore, nel qual caso \var{errno} assumerà uno dei valori \macro{EINVAL} o
\macro{EFAULT}.}
\end{prototype}
Pone il processo in stato di sleep fino al ritorno di un gestore.
\bodydesc{La funzione ritorna solo dopo che un segnale è stato ricevuto ed
- il relativo gestore è ritornato, nel qual caso restituisce -1 e imposta
- \var{errno} a \macro{EINTR}.}
+ il relativo gestore è ritornato, nel qual caso restituisce -1 e
+ \var{errno} assumerà il valore \macro{EINTR}.}
\end{prototype}
La funzione segnala sempre una condizione di errore (il successo sarebbe
Pone il processo in stato di sleep per \param{usec} microsecondi.
\bodydesc{La funzione restituisce zero se l'attesa viene completata, o -1 in
- caso di errore, nel qual caso \var{errno} è impostata a \macro{EINTR}.}
+ caso di errore, nel qual caso \var{errno} assumerà il valore
+ \macro{EINTR}.}
\end{prototype}
In caso di interruzione restituisce il tempo restante in \param{rem}.
\bodydesc{La funzione restituisce zero se l'attesa viene completata, o -1 in
- caso di errore, nel qual caso \var{errno} è impostata a
+ caso di errore, nel qual caso \var{errno} assumerà uno dei valori:
\begin{errlist}
\item[\macro{EINVAL}] si è specificato un numero di secondi negativo o un
numero di nanosecondi maggiore di 999.999.999.
\bodydesc{Le prime quattro funzioni ritornano 0 in caso di successo, mentre
\func{sigismember} ritorna 1 se \param{signum} è in \param{set} e 0
- altrimenti. In caso di errore tutte ritornano -1, con \var{errno} impostata a
- \macro{EINVAL} (il solo errore possibile è che \param{signum} non sia un
- segnale valido).}
+ altrimenti. In caso di errore tutte ritornano -1, con \var{errno}
+ impostata a \macro{EINVAL} (il solo errore possibile è che \param{signum}
+ non sia un segnale valido).}
\end{functions}
Dato che in generale non si può fare conto sulle caratteristiche di una
\label{fig:sig_siginfo_t}
\end{figure}
-Installando un gestore di tipo \var{sa\_sigaction} diventa allora
-possibile accedere alle informazioni restituite attraverso il puntatore a
-questa struttura. Tutti i segnali impostano i campi \var{si\_signo}, che riporta
-il numero del segnale ricevuto, \var{si\_errno}, che riporta, quando diverso
-da zero, il codice dell'errore associato al segnale, e \var{si\_code}, che
-viene usato dal kernel per specificare maggiori dettagli riguardo l'evento che
-ha causato l'emissione del segnale.
+Installando un gestore di tipo \var{sa\_sigaction} diventa allora possibile
+accedere alle informazioni restituite attraverso il puntatore a questa
+struttura. Tutti i segnali impostano i campi \var{si\_signo}, che riporta il
+numero del segnale ricevuto, \var{si\_errno}, che riporta, quando diverso da
+zero, il codice dell'errore associato al segnale, e \var{si\_code}, che viene
+usato dal kernel per specificare maggiori dettagli riguardo l'evento che ha
+causato l'emissione del segnale.
In generale \var{si\_code} contiene, per i segnali generici, per quelli
real-time e per tutti quelli inviati tramite \func{kill}, informazioni circa
gestore il valore \param{value}.
\bodydesc{La funzione restituisce 0 in caso di successo e -1 in caso di
- errore, nel qual caso \var{errno} viene impostata ai valori:
+ errore, nel qual caso \var{errno} assumerà uno dei valori:
\begin{errlist}
\item[\macro{EAGAIN}] La coda è esarita, ci sono già \macro{SIGQUEUE\_MAX}
segnali in attesa si consegna.
Attende che uno dei segnali specificati in \param{set} sia pendente.
\bodydesc{La funzione restituisce 0 in caso di successo e -1 in caso di
- errore, nel qual caso \var{errno} viene impostata ai valori:
+ errore, nel qual caso \var{errno} assumerà uno dei valori:
\begin{errlist}
\item[\macro{EINTR}] La funzione è stata interrotta.
\item[\macro{EINVAL}] Si è specificato un valore non valido per
\bodydesc{Le funzioni restituiscono 0 in caso di successo e -1 in caso di
- errore, nel qual caso \var{errno} viene impostata ai valori già visti per
- \func{sigwait}, ai quali se aggiunge, per \func{sigtimedwait}:
+ errore, nel qual caso \var{errno} assumerà uno dei valori già visti per
+ \func{sigwait}, ai quali si aggiunge, per \func{sigtimedwait}:
\begin{errlist}
\item[\macro{EAGAIN}] Si è superato il timeout senza che un segnale atteso
fosse emmesso.
Restituisce informazioni sul sistema nella struttura \param{info}.
\bodydesc{La funzione ritorna 0 in caso di successo e -1 in caso di
- fallimento, nel qual caso \var{errno} viene impostata a \macro{EFAULT}.}
+ fallimento, nel qual caso \var{errno} assumerà il valore \macro{EFAULT}.}
\end{prototype}
La funzione, che viene usata dal comando \cmd{uname}, restituisce le
Legge o scrive uno dei parametri di sistema.
\bodydesc{La funzione restituisce 0 in caso di successo e -1 in caso di
- errore, nel qual caso \var{errno} viene impostata ai valori:
+ errore, nel qual caso \var{errno} assumerà uno dei valori:
\begin{errlist}
\item[\macro{EPERM}] il processo non ha il permesso di accedere ad uno dei
componenti nel cammino specificato per il parametro, o non ha il permesso
Smonta il filesystem montato sulla directory \param{target}.
\bodydesc{La funzione ritorna 0 in caso di successo e -1 in caso di
- fallimento, nel qual caso \var{errno} viene impostata a:
+ fallimento, nel qual caso \var{errno} assumerà uno dei valori:
\begin{errlist}
\item[\macro{EPERM}] il processo non ha i privilegi di amministratore.
\item[\macro{EBUSY}] \param{target} è la directory di lavoro di qualche
posto il file specificato.
\bodydesc{Le funzioni ritornano 0 in caso di successo e -1 in caso di
- errore, nel qual caso \var{errno} viene impostata ai valori:
+ errore, nel qual caso \var{errno} assumerà uno dei valori:
\begin{errlist}
\item[\macro{ENOSYS}] il filesystem su cui si trova il file specificato non
supporta la funzione.
Imposta il limite per la risorsa \param{resource}.
\bodydesc{Le funzioni ritornano 0 in caso di successo e -1 in caso di
- errore, nel qual caso \var{errno} viene impostata ai valori:
+ errore, nel qual caso \var{errno} assumerà uno dei valori:
\begin{errlist}
\item[\macro{EINVAL}] I valori per \param{resource} non sono validi.
\item[\macro{EPERM}] Un processo senza i privilegi di amministratore ha
Imposta il tempo di sistema.
\bodydesc{Entrambe le funzioni restituiscono 0 in caso di successo e -1 in
- caso di errore, nel qual caso \var{errno} può assumere il valori
+ caso di errore, nel qual caso \var{errno} può assumere i valori
\macro{EINVAL} \macro{EFAULT} e per \func{settimeofday} anche
\macro{EPERM}.}
\end{functions}
\bodydesc{La funzione ritorna il puntatore alla stringa col messaggio di
errore in caso di successo e \macro{NULL} in caso di errore, nel qual caso
- \var{errno} sarà impostata a \macro{EINVAL} se si è specificato un numero di
- errore non valido.}
+ \var{errno} assumerà il valore \macro{EINVAL} se si è specificato un
+ numero di errore non valido.}
\end{prototype}
In generale \func{strerror} viene usata passando \var{errno} come parametro;