C
Using pselect() to avoid a signal race
/* An example of a free of signal race program using sigprocmask() and * pselect(). */ #include <sys/select.h> #include <sys/types.h> #include <sys/socket.h> #include <sys/stat.h> #include <fcntl.h> #include <netinet/in.h> #include <netinet/ip.h> #include <arpa/inet.h> #include <signal.h> #include <stdio.h> #include <string.h> #include <stdlib.h> #include <unistd.h> #include <errno.h> /* Flag that tells the daemon to exit. */ static volatile int exit_request = 0; /* Signal handler.
Signal race with select() and accept()
/* An example of a signal race condition using the traditional UNIX functions: * signal(), select(), accept (). */ #include <sys/select.h> #include <sys/types.h> #include <sys/socket.h> #include <sys/stat.h> #include <fcntl.h> #include <netinet/in.h> #include <netinet/ip.h> #include <arpa/inet.h> #include <signal.h> #include <stdio.h> #include <string.h> #include <stdlib.h> #include <unistd.h> #include <errno.h> /* Flag that tells the daemon to exit. */ static volatile int exit_request = 0; /* Signal handler.

