sigwaitinfo

TriggerTek Logo
abcdefghijklmnopqrstuvwxyz_
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);

DESCRIPTION
       sigwaitinfo() suspends execution of the calling process until  one  of
       the  signals  in	 set  is delivered.  (If one of the signals in set is
       already pending for the calling	process,  sigwaitinfo()	 will  return
       immediately with information about that signal.)

       sigwaitinfo()  removes the delivered signal from the calling process’s
       list of pending signals and returns the signal number as its  function
       result.	If the info argument is not NULL, then it returns a structure
       of type siginfo_t (see sigaction(2)) containing information about  the
       signal.

       Signals	returned  via sigwaitinfo() are delivered in the usual order;
       see signal(7) for further details.

       sigtimedwait() operates in  exactly  the	 same  way  as	sigwaitinfo()
       except  that  it has an additional argument, timeout, which enables an
       upper bound to be placed on the time for which  the  process  is	 sus-
       pended.	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 per-
       formed: sigtimedwait() returns immediately,  either  with  information
       about  a	 signal	 that was pending for the caller, or with an error if
       none of the signals in set was pending.

RETURN VALUE
       On success, both sigwaitinfo() and sigtimedwait() return a signal num-
       ber  (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 delivered within the timeout period speci-
	      fied to sigtimedwait().

       EINVAL timeout was invalid.

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

NOTES
       In normal usage, the caller blocks the signals in set via a prior call
       to  sigprocmask()  (so  that the default disposition for these signals
       does not occur if they are delivered between successive calls to	 sig-
       waitinfo()or sigtimedwait()) and does not establish handlers for these
       signals.

       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 sigwaitinfo(), and indeed this  is	 what
       is done on Linux.

CONFORMING TO
       POSIX 1003.1-2001

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



Linux 2.4.18			  2002-06-07		       SIGWAITINFO(2)