From 4d9f9d2efab74ce8580fddb05dbdbe754014cdea Mon Sep 17 00:00:00 2001 From: Simone Piccardi Date: Mon, 9 Sep 2002 22:28:54 +0000 Subject: [PATCH] Revisione dei messaggi di errore --- fileadv.tex | 24 +++++++++---------- filedir.tex | 68 ++++++++++++++++++++++++++++------------------------ filestd.tex | 19 +++++++-------- fileunix.tex | 45 ++++++++++++++++------------------ ipc.tex | 30 +++++++++++------------ process.tex | 18 +++++++------- prochand.tex | 14 +++++------ session.tex | 40 ++++++++++++++++++++++++++++--- signal.tex | 41 +++++++++++++++---------------- system.tex | 16 ++++++------- 10 files changed, 176 insertions(+), 139 deletions(-) diff --git a/fileadv.tex b/fileadv.tex index 3b0575a..05e75f6 100644 --- a/fileadv.tex +++ b/fileadv.tex @@ -78,7 +78,7 @@ con la funzione \func{select}, il cui prototipo \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. @@ -178,7 +178,7 @@ specificati da \param{ufds}. \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. @@ -278,7 +278,7 @@ sostituisce i precedenti, ed aggiunge a \func{select} una nuova funzione \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. @@ -504,7 +504,7 @@ appena descritta; i rispettivi prototipi sono: \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. @@ -675,8 +675,8 @@ specifica operazione; il suo prototipo 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}. @@ -707,7 +707,7 @@ lettura o scrittura; il suo prototipo 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}. @@ -774,8 +774,8 @@ prototipi sono: 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 @@ -881,7 +881,7 @@ in memoria di un file; il suo prototipo \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}. @@ -1129,7 +1129,7 @@ contenuto della memoria mappata con il file su disco; il suo prototipo 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}. @@ -1185,7 +1185,7 @@ mappatura della memoria usando la funzione \func{munmap}, il suo prototipo 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. diff --git a/filedir.tex b/filedir.tex index c1bb182..30d71ca 100644 --- a/filedir.tex +++ b/filedir.tex @@ -283,7 +283,7 @@ specificato. La funzione che permette di creare un nuovo link simbolico \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. @@ -362,7 +362,7 @@ la funzione \func{readlink}, il cui prototipo \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. @@ -676,7 +676,7 @@ appunto per \textit{change directory}, il suo prototipo 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 @@ -696,8 +696,8 @@ usa \func{fchdir}, il cui prototipo 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 @@ -780,7 +780,7 @@ POSIX definisce la funzione \func{tempfile}, il cui prototipo \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. @@ -807,8 +807,8 @@ il suo prototipo \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}} @@ -833,7 +833,7 @@ prototipo 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 @@ -858,8 +858,8 @@ In OpenBSD \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} @@ -909,11 +909,10 @@ queste funzioni sono i seguenti: 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. @@ -1285,12 +1284,12 @@ Cambia i tempi di ultimo accesso e modifica dell'inode specificato da \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: @@ -1676,14 +1675,21 @@ questo si pu \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 @@ -1882,7 +1888,7 @@ sono tre e i loro prototipi sono i seguenti: 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 @@ -1947,7 +1953,7 @@ radice con la funzione \func{chroot}, il cui prototipo \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} diff --git a/filestd.tex b/filestd.tex index ac04421..78a524c 100644 --- a/filestd.tex +++ b/filestd.tex @@ -222,10 +222,9 @@ Le funzioni che si possono usare per aprire uno stream sono solo tre: 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 @@ -402,14 +401,14 @@ intero (di tipo \ctyp{int}) \macro{EOF}\footnote{la costante deve essere 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 @@ -1326,8 +1325,8 @@ della funzione 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}. diff --git a/fileunix.tex b/fileunix.tex index c83cc73..ace7bcb 100644 --- a/fileunix.tex +++ b/fileunix.tex @@ -183,8 +183,8 @@ prototipo 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}. @@ -386,7 +386,7 @@ descriptor ritorna disponibile; il suo prototipo 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. @@ -442,8 +442,8 @@ un valore qualsiasi con la funzione \func{lseek}, il cui prototipo 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. @@ -503,8 +503,7 @@ utilizzando la funzione \func{read}, il cui prototipo 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. @@ -581,8 +580,8 @@ Cerca di leggere \var{count} byte dal file \var{fd}, a partire dalla posizione \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} @@ -608,8 +607,7 @@ funzione \func{write}, il cui prototipo 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. @@ -654,8 +652,8 @@ Cerca di scrivere sul file \var{fd}, a partire dalla posizione \var{offset}, \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}. @@ -874,7 +872,7 @@ prototipo 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. @@ -927,8 +925,7 @@ prototipo 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. @@ -969,11 +966,11 @@ file descriptor viene usata la funzione \func{fcntl} il cui prototipo 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} @@ -1012,8 +1009,8 @@ valori \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 @@ -1085,8 +1082,8 @@ per ogni singolo dispositivo. Il prototipo di questa funzione \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}. diff --git a/ipc.tex b/ipc.tex index 6bb3836..09017aa 100644 --- a/ipc.tex +++ b/ipc.tex @@ -910,8 +910,8 @@ file ed un numero di versione; il suo prototipo 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}, @@ -1165,8 +1165,7 @@ una 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. @@ -1340,7 +1339,7 @@ prototipo 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. @@ -1395,7 +1394,7 @@ messaggio su una coda si utilizza la funzione \func{msgsnd}; il suo prototipo 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. @@ -1507,8 +1506,8 @@ rimosso dalla stessa) 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. @@ -1566,8 +1565,8 @@ disponibili per la lettura, 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 @@ -1640,8 +1639,8 @@ permette di creare o ottenere l'identificatore di un insieme di semafori 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 @@ -1786,7 +1785,8 @@ loro inizializzazione) \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. @@ -1923,8 +1923,8 @@ prototipo 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 diff --git a/process.tex b/process.tex index ca92e15..770e2b8 100644 --- a/process.tex +++ b/process.tex @@ -175,7 +175,7 @@ pu 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 @@ -192,7 +192,7 @@ definita su altri sistemi; il suo prototipo 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 @@ -456,20 +456,20 @@ prototipi sono i seguenti: 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}. @@ -579,7 +579,7 @@ prototipo 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 @@ -631,7 +631,7 @@ analoghe system call a cui fanno da interfaccia. I loro prototipi sono: \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 @@ -639,7 +639,7 @@ analoghe system call a cui fanno da interfaccia. I loro prototipi sono: 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. @@ -740,7 +740,7 @@ Le funzioni per bloccare e sbloccare singole sezioni di memoria sono \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 diff --git a/prochand.tex b/prochand.tex index f3298c0..90b1e2c 100644 --- a/prochand.tex +++ b/prochand.tex @@ -1111,9 +1111,9 @@ Sostituiscono l'immagine corrente del processo con quella indicata nel primo 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 @@ -1743,8 +1743,8 @@ questa funzione \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 @@ -1785,7 +1785,7 @@ delle due 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. @@ -1805,7 +1805,7 @@ un utente specifico, si pu 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} diff --git a/session.tex b/session.tex index 58e4ddb..7b7b738 100644 --- a/session.tex +++ b/session.tex @@ -154,9 +154,43 @@ processo con lo stesso valore che hanno nel processo padre, per cui un 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 diff --git a/signal.tex b/signal.tex index 3fada26..39d70ef 100644 --- a/signal.tex +++ b/signal.tex @@ -951,7 +951,7 @@ la funzione \func{kill}; il cui prototipo 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. @@ -1095,7 +1095,7 @@ suo prototipo \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} @@ -1256,8 +1256,8 @@ quello di usare la funzione \func{pause}, il cui prototipo 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 @@ -1306,7 +1306,8 @@ seguono quella di SUSv2 che prevede il seguente prototipo: 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} @@ -1321,7 +1322,7 @@ POSIX1.b, il cui prototipo 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. @@ -1716,9 +1717,9 @@ degli insiemi di segnali: \func{sigemptyset}, \func{sigfillset}, \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 @@ -1900,13 +1901,13 @@ siginfo_t { \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 @@ -2444,7 +2445,7 @@ funzione, \func{sigqueue}, il cui prototipo 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. @@ -2486,7 +2487,7 @@ meccanismi di comunicazione elementare; la prima di queste funzioni 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 @@ -2531,8 +2532,8 @@ relativi prototipi sono: \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. diff --git a/system.tex b/system.tex index 2422abd..b0c4ddf 100644 --- a/system.tex +++ b/system.tex @@ -488,7 +488,7 @@ suo prototipo 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 @@ -577,7 +577,7 @@ l'implementazione 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 @@ -806,7 +806,7 @@ Una volta che non si voglia pi 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 @@ -861,7 +861,7 @@ informazioni riguardo al filesystem su cui si trova un certo file, sono 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. @@ -1490,7 +1490,7 @@ sono: 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 @@ -1868,7 +1868,7 @@ sono: 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} @@ -2372,8 +2372,8 @@ prima funzione che si pu \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; -- 2.30.2