👤
Home Man
Search
Today's Posts
Register

Linux & Unix Commands - Search Man Pages
Man Page or Keyword Search:
Select Section of Man Page:
Select Man Page Repository:

Linux 2.6 - man page for sigtimedwait (linux section 2)

SIGWAITINFO(2)			    Linux Programmer's Manual			   SIGWAITINFO(2)

NAME
       sigwaitinfo, sigtimedwait - synchronously wait for queued signals

SYNOPSIS
       #include <signal.h>

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

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

   Feature Test Macro Requirements for glibc (see feature_test_macros(7)):

       sigwaitinfo(), sigtimedwait(): _POSIX_C_SOURCE >= 199309L

DESCRIPTION
       sigwaitinfo()  suspends execution of the calling thread until one of the signals in set is
       pending (If one of the signals in set is already pending for the calling thread,  sigwait-
       info() will return immediately.)

       sigwaitinfo()  removes  the  signal from the set of pending signals and returns the signal
       number as its function result.  If the info argument is not NULL, then the buffer that  it
       points  to  is  used to return a structure of type siginfo_t (see sigaction(2)) containing
       information about the signal.

       If multiple signals in set are pending for the caller, the signal  that	is  retrieved  by
       sigwaitinfo()  is determined according to the usual ordering rules; see signal(7) for fur-
       ther details.

       sigtimedwait() operates in exactly the same way as sigwaitinfo() except	that  it  has  an
       additional  argument,  timeout,	which specifies the interval for which the thread is sus-
       pended waiting for a signal.  (This interval will be rounded up to the system clock granu-
       larity,	and  kernel  scheduling  delays  mean  that  the  interval may overrun by a small
       amount.)  This argument is of the following type:

	   struct timespec {
	       long    tv_sec;	       /* seconds */
	       long    tv_nsec;        /* nanoseconds */
	   }

       If both fields of this structure are specified as 0, a poll is  performed:  sigtimedwait()
       returns immediately, either with information about a signal that was pending for the call-
       er, or with an error if none of the signals in set was pending.

RETURN VALUE
       On success, both sigwaitinfo() and sigtimedwait() return a signal number  (i.e.,  a  value
       greater	than  zero).   On  failure  both  calls return -1, with errno set to indicate the
       error.

ERRORS
       EAGAIN No signal in set was became pending within the timeout  period  specified  to  sig-
	      timedwait().

       EINTR  The wait was interrupted by a signal handler; see signal(7).  (This handler was for
	      a signal other than one of those in set.)

       EINVAL timeout was invalid.

CONFORMING TO
       POSIX.1-2001.

NOTES
       In normal usage, the calling program blocks the signals in set via a prior  call  to  sig-
       procmask(2)  (so  that  the  default  disposition for these signals does not occur if they
       become pending between successive calls to sigwaitinfo() or sigtimedwait()) and	does  not
       establish  handlers  for  these signals.  In a multithreaded program, the signal should be
       blocked in all threads, in order to prevent the signal  being  treated  according  to  its
       default	disposition  in  a  thread  other than the one calling sigwaitinfo() or sigtimed-
       wait()).

       The set of signals that is pending for a given thread is the union of the set  of  signals
       that  is  pending  specifically for that thread and the set of signals that is pending for
       the process as a whole (see signal(7)).

       Attempts to wait for SIGKILL and SIGSTOP are silently ignored.

       If multiple threads of a process are blocked waiting for the same  signal(s)  in  sigwait-
       info() or sigtimedwait(), then exactly one of the threads will actually receive the signal
       if it becomes pending for the process as a whole; which of the threads receives the signal
       is indeterminate.

       POSIX  leaves  the  meaning  of	a  NULL  value for the timeout argument of sigtimedwait()
       unspecified, permitting the possibility that this has the same meaning as a call  to  sig-
       waitinfo(), and indeed this is what is done on Linux.

       On Linux, sigwaitinfo() is a library function implemented on top of sigtimedwait().

SEE ALSO
       kill(2), sigaction(2), signal(2), signalfd(2), sigpending(2), sigprocmask(2), sigqueue(3),
       sigsetops(3), sigwait(3), signal(7), time(7)

COLOPHON
       This page is part of release 3.55 of the Linux man-pages project.  A  description  of  the
       project,     and    information	  about    reporting	bugs,	 can	be    found    at
       http://www.kernel.org/doc/man-pages/.

Linux					    2013-09-04				   SIGWAITINFO(2)


All times are GMT -4. The time now is 09:14 AM.

Unix & Linux Forums Content Copyrightę1993-2018. All Rights Reserved.
×
UNIX.COM Login
Username:
Password:  
Show Password