diff options
Diffstat (limited to 'man3/sem_wait.3')
-rw-r--r-- | man3/sem_wait.3 | 34 |
1 files changed, 17 insertions, 17 deletions
diff --git a/man3/sem_wait.3 b/man3/sem_wait.3 index 7b61f6dbe..da4893202 100644 --- a/man3/sem_wait.3 +++ b/man3/sem_wait.3 @@ -175,14 +175,14 @@ sem_timedwait() timed out #include <stdlib.h> #include <time.h> #include <unistd.h> - +\& #include <assert.h> - +\& sem_t sem; - +\& #define handle_error(msg) \e do { perror(msg); exit(EXIT_FAILURE); } while (0) - +\& static void handler(int sig) { @@ -192,47 +192,47 @@ handler(int sig) _exit(EXIT_FAILURE); } } - +\& int main(int argc, char *argv[]) { struct sigaction sa; struct timespec ts; int s; - +\& if (argc != 3) { fprintf(stderr, "Usage: %s <alarm\-secs> <wait\-secs>\en", argv[0]); exit(EXIT_FAILURE); } - +\& if (sem_init(&sem, 0, 0) == \-1) handle_error("sem_init"); - +\& /* Establish SIGALRM handler; set alarm timer using argv[1]. */ - +\& sa.sa_handler = handler; sigemptyset(&sa.sa_mask); sa.sa_flags = 0; if (sigaction(SIGALRM, &sa, NULL) == \-1) handle_error("sigaction"); - +\& alarm(atoi(argv[1])); - +\& /* Calculate relative interval as current time plus number of seconds given argv[2]. */ - +\& if (clock_gettime(CLOCK_REALTIME, &ts) == \-1) handle_error("clock_gettime"); - +\& ts.tv_sec += atoi(argv[2]); - +\& printf("%s() about to call sem_timedwait()\en", __func__); while ((s = sem_timedwait(&sem, &ts)) == \-1 && errno == EINTR) continue; /* Restart if interrupted by handler. */ - +\& /* Check what happened. */ - +\& if (s == \-1) { if (errno == ETIMEDOUT) printf("sem_timedwait() timed out\en"); @@ -240,7 +240,7 @@ main(int argc, char *argv[]) perror("sem_timedwait"); } else printf("sem_timedwait() succeeded\en"); - +\& exit((s == 0) ? EXIT_SUCCESS : EXIT_FAILURE); } .EE |