Aggiunti i due esempi di pselect lasciati indietro, specificato il
[gapil.git] / listati / pselect_norace.c
diff --git a/listati/pselect_norace.c b/listati/pselect_norace.c
new file mode 100644 (file)
index 0000000..f5f9c39
--- /dev/null
@@ -0,0 +1,13 @@
+while (1) {
+    sigprocmask(SIG_BLOCK, &newmask, &oldmask);
+    if (receive_signal != 0) handle_signal();
+    n = pselect(nfd, rset, wset, eset, NULL, &oldmask);
+    sigprocmask(SIG_SETMASK, &oldmask, NULL);
+    if (n < 0) {
+       if (errno == EINTR) {
+           continue;
+       }
+    } else {
+       handle_filedata();
+    }
+}