From: Simone Piccardi Date: Tue, 4 Feb 2003 10:24:17 +0000 (+0000) Subject: Ancora message queues X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=commitdiff_plain;h=aee4a2e76ad7b0ed41eb06c4c70b8db5df9a4451 Ancora message queues --- diff --git a/ipc.tex b/ipc.tex index 7f6ef5a..029284f 100644 --- 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}