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.
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).
\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}
\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}