Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
SIGTIMEDWAIT(2) 	       System Calls Manual		 SIGTIMEDWAIT(2)

NAME
     sigtimedwait, sigwaitinfo -- wait for queued signals (REALTIME)

LIBRARY
     Standard C Library (libc, -lc)

SYNOPSIS
     #include <signal.h>

     int
     sigtimedwait(const sigset_t *restrict set, siginfo_t *restrict info,
	 const struct timespec *restrict timeout);

     int
     sigwaitinfo(const sigset_t * restrict set, siginfo_t * restrict info);

DESCRIPTION
     The  sigtimedwait()  system call is equivalent to sigwaitinfo() except that
     if none of the signals specified by set are pending,  sigtimedwait()  waits
     for  the  time  interval  specified in the timespec structure referenced by
     timeout.  If the timespec structure pointed to by	timeout  is  zero-valued
     and  if  none  of	the signals specified by set are pending, then sigtimed-
     wait() returns immediately with an error.	If timeout is the NULL	pointer,
     sigtimedwait()  blocks indefinitely.  CLOCK_MONOTONIC clock is used to mea-
     sure the time interval specified by the timeout argument.

     The sigwaitinfo() system call selects the pending signal from the set spec-
     ified by set.  Should any of multiple pending signals in the range SIGRTMIN
     to SIGRTMAX be selected, it shall be the lowest numbered one.   The  selec-
     tion  order  between realtime and non-realtime signals, or between multiple
     pending non-realtime signals, is unspecified.  If no signal in set is pend-
     ing at the time of the call, the calling thread is suspended until  one  or
     more  signals  in	set  become pending or until it is interrupted by an un-
     blocked, caught signal.

     The sigwaitinfo() system call is equivalent to the sigwait() system call if
     the info argument is NULL.  If the info argument is non-NULL, the	sigwait-
     info() function is equivalent to sigwait(), except that the selected signal
     number  shall be stored in the si_signo member, and the cause of the signal
     shall be stored in the si_code member.  Besides this, the sigwaitinfo() and
     sigtimedwait() system calls may return  EINTR  if	interrupted  by  signal,
     which is not allowed for the sigwait() function.

     If  any value is queued to the selected signal, the first such queued value
     is dequeued and, if the info argument is non-NULL, the value is  stored  in
     the  si_value member of info.  The system resource used to queue the signal
     is released and returned to the system for  other	use.   If  no  value  is
     queued,  the  content of the si_value member is zero-valued.  If no further
     signals are queued for the selected signal, the pending indication for that
     signal is reset.

RETURN VALUES
     Upon successful completion (that is, one of the signals specified by set is
     pending or is generated) sigwaitinfo() and sigtimedwait()	return	the  se-
     lected  signal  number.   Otherwise, the functions return a value of -1 and
     set the global variable errno to indicate the error.

ERRORS
     The sigtimedwait() system call will fail if:

     [EAGAIN]		No signal specified by	set  was  generated  within  the
			specified timeout period.

     The sigtimedwait() and sigwaitinfo() system calls fail if:

     [EINTR]		The wait was interrupted by an unblocked, caught signal.

     The sigtimedwait() system call may also fail if:

     [EINVAL]		The timeout argument specified a tv_nsec value less than
			zero  or  greater than or equal to 1000 million.  Kernel
			only checks for this error if no signal  is  pending  in
			set and it is necessary to wait.

SEE ALSO
     sigaction(2),   sigpending(2),   sigqueue(2),   sigsuspend(2),  sigwait(2),
     pause(3), pthread_sigmask(3), siginfo(3)

STANDARDS
     The sigtimedwait()  and  sigwaitinfo()  system  calls  conform  to  ISO/IEC
     9945-1:1996  ("POSIX.1").	POSIX leaves the behavior of sigtimedwait() with
     a NULL timeout pointer unspecified.

FreeBSD ports 15.quarterly	 April 21, 2022 		 SIGTIMEDWAIT(2)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=sigtimedwait&sektion=2&manpath=FreeBSD+15.1-RELEASE+and+Ports.quarterly>

home | help