diff options
Diffstat (limited to 'man3/sem_wait.3')
-rw-r--r-- | man3/sem_wait.3 | 46 |
1 files changed, 23 insertions, 23 deletions
diff --git a/man3/sem_wait.3 b/man3/sem_wait.3 index e08e53f0d..b1302ca32 100644 --- a/man3/sem_wait.3 +++ b/man3/sem_wait.3 @@ -3,7 +3,7 @@ .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" -.TH sem_wait 3 2022-12-15 "Linux man-pages 6.03" +.TH sem_wait 3 2023-07-20 "Linux man-pages 6.05.01" .SH NAME sem_wait, sem_timedwait, sem_trywait \- lock a semaphore .SH LIBRARY @@ -114,24 +114,24 @@ The call timed out before the semaphore could be locked. .SH ATTRIBUTES For an explanation of the terms used in this section, see .BR attributes (7). -.ad l -.nh .TS allbox; lbx lb lb l l l. Interface Attribute Value T{ +.na +.nh .BR sem_wait (), .BR sem_trywait (), .BR sem_timedwait () T} Thread safety MT-Safe .TE -.hy -.ad .sp 1 .SH STANDARDS -POSIX.1-2001, POSIX.1-2008. +POSIX.1-2008. +.SH HISTORY +POSIX.1-2001. .SH EXAMPLES The (somewhat trivial) program shown below operates on an unnamed semaphore. @@ -173,14 +173,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) { @@ -190,47 +190,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"); @@ -238,7 +238,7 @@ main(int argc, char *argv[]) perror("sem_timedwait"); } else printf("sem_timedwait() succeeded\en"); - +\& exit((s == 0) ? EXIT_SUCCESS : EXIT_FAILURE); } .EE |