Altro meteriale su nanosleep
[gapil.git] / signal.tex
index c2345f01e1c49dc0ba19659c9775ca2a2d6d81f6..4fbe0b2b94343d61b59caf03f05b40be3b535140 100644 (file)
@@ -1290,9 +1290,10 @@ quella di SUSv2 che prevede il seguente prototipo:
 
 \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 è:
+Anche questa funzione a seconda delle implementazioni 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)}
   
@@ -1303,6 +1304,27 @@ Anche questa funzione pu
     \macro{EINTR}.}
 \end{prototype}
 
+Lo standard richiede che la funzione sia implementata in maniera del tutto
+indipendente da \func{alarm}\footnote{nel caso di Linux direttamente
+  attraverso il timer del kernel} e sia utilizzabile senza interferenze con
+l'uso di \macro{SIGALRM}.
+
+
+\begin{figure}[!htb]
+  \footnotesize \centering
+  \begin{minipage}[c]{15cm}
+    \begin{lstlisting}[labelstep=0,frame=,indent=1cm]{}
+struct timespec
+{
+    time_t  tv_sec;         /* seconds */
+    long    tv_nsec;        /* nanoseconds */
+};
+    \end{lstlisting}
+  \end{minipage} 
+  \normalsize 
+  \caption{La struttura \var{timespec} di \func{nanosleep}.} 
+  \label{fig:sig_alarm_def}
+\end{figure}