esempio le operazioni di lettura possono bloccarsi quando non ci sono dati
disponibili sul descrittore su cui si sta operando.
esempio le operazioni di lettura possono bloccarsi quando non ci sono dati
disponibili sul descrittore su cui si sta operando.
Questo comportamento causa uno dei problemi più comuni che ci si trova ad
affrontare nelle operazioni di I/O, che è quello che si verifica quando si
devono eseguire operazioni che possono bloccarsi su più file descriptor:
Questo comportamento causa uno dei problemi più comuni che ci si trova ad
affrontare nelle operazioni di I/O, che è quello che si verifica quando si
devono eseguire operazioni che possono bloccarsi su più file descriptor:
Per superare il problema di dover usare il \textit{polling} controllare la
disponibilità di accesso ad un file aperto in modalità non bloccante, sia BSD
Per superare il problema di dover usare il \textit{polling} controllare la
disponibilità di accesso ad un file aperto in modalità non bloccante, sia BSD
l'esecuzione di un processo fino a che l'accesso diventi possibile; il primo
ad introdurre questa nuova interfaccia, chiamata usualmente \textit{I/O
multiplexing}, è stato BSD, con l'introduzione della funzione \func{select},
l'esecuzione di un processo fino a che l'accesso diventi possibile; il primo
ad introdurre questa nuova interfaccia, chiamata usualmente \textit{I/O
multiplexing}, è stato BSD, con l'introduzione della funzione \func{select},
qual caso \var{errno} viene settata ai valori:
\begin{errlist}
\item[\macro{EBADF}] Si è specificato un file descriptor sbagliato in uno
qual caso \var{errno} viene settata ai valori:
\begin{errlist}
\item[\macro{EBADF}] Si è specificato un file descriptor sbagliato in uno
\item[\macro{EINTR}] La funzione è stata interrotta da un segnale.
\item[\macro{EINVAL}] Si è specificato per \param{n} un valore negativo.
\end{errlist}
\item[\macro{EINTR}] La funzione è stata interrotta da un segnale.
\item[\macro{EINVAL}] Si è specificato per \param{n} un valore negativo.
\end{errlist}
il limite del numero massimo di file aperti\footnote{ad esempio in Linux, fino
alla serie 2.0.x, c'era un limite di 256 file per processo.}, ma quando,
come nelle versioni più recenti del kernel, questo limite non c'è un massimo,
il limite del numero massimo di file aperti\footnote{ad esempio in Linux, fino
alla serie 2.0.x, c'era un limite di 256 file per processo.}, ma quando,
come nelle versioni più recenti del kernel, questo limite non c'è un massimo,
La funzione richiede di specificare tre insiemi distinti di file descriptor;
il primo, \param{readfds}, verrà osservato per rilevare la disponibilità di
La funzione richiede di specificare tre insiemi distinti di file descriptor;
il primo, \param{readfds}, verrà osservato per rilevare la disponibilità di
sistema unix-like gestisce la condivisione dei file da parte di processi
diversi. In quell'occasione si è visto come, con l'eccezione dei file aperti
in \textit{append mode}, quando più processi scrivono contemporaneamente sullo
sistema unix-like gestisce la condivisione dei file da parte di processi
diversi. In quell'occasione si è visto come, con l'eccezione dei file aperti
in \textit{append mode}, quando più processi scrivono contemporaneamente sullo
generale le situazioni più comuni sono due: l'interazione fra un processo che
scrive e altri che leggono, in cui questi ultimi possono leggere informazioni
scritte solo in maniera parziale o incompleta; o quella in cui diversi
generale le situazioni più comuni sono due: l'interazione fra un processo che
scrive e altri che leggono, in cui questi ultimi possono leggere informazioni
scritte solo in maniera parziale o incompleta; o quella in cui diversi