Altre funzioni di attesa, un po' meglio del while(1) ...
authorSimone Piccardi <piccardi@gnulinux.it>
Thu, 7 Mar 2002 22:21:55 +0000 (22:21 +0000)
committerSimone Piccardi <piccardi@gnulinux.it>
Thu, 7 Mar 2002 22:21:55 +0000 (22:21 +0000)
signal.tex

index bfacf64b642354ca7d488b2dda271551c3683cc1..c2345f01e1c49dc0ba19659c9775ca2a2d6d81f6 100644 (file)
@@ -1275,12 +1275,36 @@ vedremo fra poco). In tal caso mescolare chiamata di \func{alarm} e
 indefiniti. Nel caso delle \acr{glibc} è stata usata una implementazione
 completamente indipendente e questi problemi non ci sono.
 
 indefiniti. Nel caso delle \acr{glibc} è stata usata una implementazione
 completamente indipendente e questi problemi non ci sono.
 
-La granularità di \func{sleep} è 
+La granularità di \func{sleep} permette di specificare attese in secondi, per
+questo sia sotto BSD4.3 che in SUSv2 è stata definita la funzione
+\func{usleep} (dove la \texttt{u} è intesa come sostituzione di $\mu$); i due
+standard hanno delle definizioni diverse, ma le \acr{glibc}
+seguono\footnote{secondo la man page almeno dalla versione 2.2.2.} seguono
+quella di SUSv2 che prevede il seguente prototipo: 
+\begin{prototype}{unistd.h}{int usleep(unsigned long usec)}
+  
+  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} è settata a \macro{EINTR}.}
+
+\end{prototype}
+
+Anche questa funzione può presentare problemi nell'interazione con
+\func{alarm} e \macro{SIGALRM}, ed è pertanto deprecata in favore di
+\func{nanosleep}, definita dallo standard POSIX1.b, il cui prototipo è:
+\begin{prototype}{unistd.h}{int nanosleep(const struct timespec *req, struct
+    timespec *rem)}
+  
+  Pone il processo in stato di sleep per il tempo specificato da \param{req}.
+  
+  \bodydesc{La funzione restituisce zero se l'attesa viene completata, o -1 in
+    caso di errore, nel qual caso \var{errno} è settata a \macro{EINVAL} o
+    \macro{EINTR}.}
+\end{prototype}
 
 
 
 
 
 
-Come accennato è possibile implementare \func{sleep} a partire da dall'uso di
-\func{pause} e \func{alarm}; 
 
 
 \subsection{La gestione di \macro{SIGCHLD}}
 
 
 \subsection{La gestione di \macro{SIGCHLD}}
@@ -1292,7 +1316,7 @@ segnale 
 conclusione di un processo è quella di inviare questo segnale al
 padre;\footnote{in realtà in SRV4 eredita la semantica di System V, in cui il
   segnale si chiama \macro{SIGCLD} e viene trattato in maniera speciale; se si
 conclusione di un processo è quella di inviare questo segnale al
 padre;\footnote{in realtà in SRV4 eredita la semantica di System V, in cui il
   segnale si chiama \macro{SIGCLD} e viene trattato in maniera speciale; se si
-  setta esplicitamente l'azione a \macro{SIG_IGN} il segnale non viene
+  setta esplicitamente l'azione a \macro{SIG\_IGN} il segnale non viene
   generato ed il sistema non genera zombie (lo stato di terminazione viene
   scartato senza dover chiamare una wait), l'azione di default è sempre quella
   di ignorare il segnale, ma non attiva questo comportamento. Linux, come BSD
   generato ed il sistema non genera zombie (lo stato di terminazione viene
   scartato senza dover chiamare una wait), l'azione di default è sempre quella
   di ignorare il segnale, ma non attiva questo comportamento. Linux, come BSD
@@ -1307,6 +1331,12 @@ gestire questo segnale.
 \label{sec:sig_control}
 
 
 \label{sec:sig_control}
 
 
+\subsection{Un esempio di problema}
+\label{sec:sig_example}
+
+Come accennato è possibile implementare \func{sleep} a partire da dall'uso di
+\func{pause} e \func{alarm};
+
 
 
 \subsection{Le funzioni \func{sigprocmask} e \func{sigpending}}
 
 
 \subsection{Le funzioni \func{sigprocmask} e \func{sigpending}}