Ancora message queues
authorSimone Piccardi <piccardi@gnulinux.it>
Tue, 4 Feb 2003 10:24:17 +0000 (10:24 +0000)
committerSimone Piccardi <piccardi@gnulinux.it>
Tue, 4 Feb 2003 10:24:17 +0000 (10:24 +0000)
ipc.tex

diff --git a/ipc.tex b/ipc.tex
index 7f6ef5a37e5833001fc6937eba0beba4669c5481..029284fb19b426022a8a2c6e5ae18b5c72e971cf 100644 (file)
--- a/ipc.tex
+++ b/ipc.tex
@@ -3825,7 +3825,7 @@ nell'albero dei file, e possono essere maneggiati con le usuali funzioni e
 comandi di accesso ai file,\footnote{questo è vero nel caso di Linux, che usa
   una implementazione che lo consente, non è detto che altrettanto valga per
   altri kernel. In particolare per la memoria condivisa, come si può
-  facilemente evincere con uno \cmd{strace}, le system call utilizzate sono le
+  facilmente evincere con uno \cmd{strace}, le system call utilizzate sono le
   stesse, in quanto essa è realizzata con file in uno speciale filesystem.}
 che funzionano come su dei file normali.
 
@@ -3833,9 +3833,11 @@ In particolare i permessi associati agli oggetti di IPC POSIX sono identici ai
 permessi dei file, e il controllo di accesso segue esattamente la stessa
 semantica (quella illustrata in \secref{sec:file_access_control}), invece di
 quella particolare (si ricordi quanto visto in
-\secref{sec:ipc_sysv_access_control}) usata per gli oggetti del SysV IPC. Allo
-stesso modo viene effettuata l'attribuzione dell'utente e del gruppo
-proprietari dell'oggetto alla creazione di quest'ultimo. 
+\secref{sec:ipc_sysv_access_control}) usata per gli oggetti del SysV IPC. Per
+quanto riguarda l'attribuzione dell'utente e del gruppo proprietari
+dell'oggetto alla creazione di quest'ultimo essa viene effettuata secondo la
+semantica SysV (essi corrispondono cioè a userid e groupid effettivi del
+processo che esegue la creazione).
 
 
 
@@ -3899,9 +3901,8 @@ di messaggi POSIX 
       \const{O\_EXCL} ma la coda già esiste.
     \item[\errcode{EINTR}] La funzione è stata interrotta da un segnale.
     \item[\errcode{EINVAL}] Il file non supporta la funzione, o si è
-      specificato \const{O\_CREAT} con una valore non nullo di \param{attr}, o
-      i valori di \var{mq\_maxmsg} e \var{mq\_msgsize} sono nulli o maggiori
-      rispettivamente di \const{MQ\_MAXMSG} e \const{MQ\_MSGSIZE}.
+      specificato \const{O\_CREAT} con una valore non nullo di \param{attr} e
+      valori non validi di \var{mq\_maxmsg} e \var{mq\_msgsize}.
     \item[\errcode{ENOENT}] Non si è specificato \const{O\_CREAT} ma la coda
       non esiste.
     \end{errlist}
@@ -3974,10 +3975,14 @@ struct mq_attr {
   \label{fig:ipc_mq_attr}
 \end{figure}
 
-Quando si crea la coda devono sempre essere specificati i campi
-\var{mq_msgsize} e \var{mq_maxmsg} che indicano rispettivamente la dimensione
-massima di un messaggio ed il numero massimo di messaggi che essa può
-contenre. Qualora si specifichi
+Quando si crea la coda possono essere specificati solo i campi
+\var{mq\_msgsize} e \var{mq\_maxmsg}, che indicano rispettivamente la
+dimensione massima di un messaggio ed il numero massimo di messaggi che essa
+può contenere; il valore dovrà essere positivo e minore dei rispettivi limiti
+di sistema \const{MQ\_MAXMSG} e \const{MQ\_MSGSIZE}, altrimenti la funzione
+fallirà con un errore di \errval{EINVAL}.  Qualora si specifichi per
+\param{attr} un puntatore nullo gli attributi della coda saranno impostati ai
+valori predefiniti.
 
 
 \subsection{Semafori}