Differences between current version and revision by previous author of sigsuspend(2).
Other diffs: Previous Major Revision, Previous Revision, or view the Annotated Edit History
Newer page: | version 2 | Last edited on Friday, July 2, 2004 3:39:26 pm | by JohnMcPherson | |
Older page: | version 1 | Last edited on Tuesday, June 4, 2002 12:23:47 am | by perry | Revert |
@@ -1,328 +1 @@
-SIGACTION
-!!!SIGACTION
-NAME
-SYNOPSIS
-DESCRIPTION
-RETURN VALUE
-ERRORS
-NOTES
-CONFORMING TO
-UNDOCUMENTED
-SEE ALSO
-----
-!!NAME
-
-
-
sigaction, sigprocmask, sigpending, sigsuspend - POSIX signal handling functions.
-!!SYNOPSIS
-
-
-__#include __
-
-
-__int sigaction(int__ ''signum''__, const struct
-sigaction *__''act''__, struct sigaction
-*__''oldact''__);__
-
-
-__int sigprocmask(int__ ''how''__, const sigset_t
-*__''set''__, sigset_t
-*__''oldset''__);__
-
-
-__int sigpending(sigset_t
-*__''set''__);__
-
-
-__int sigsuspend(const sigset_t
-*__''mask''__);__
-!!DESCRIPTION
-
-
-The __sigaction__ system call is used to change the
-action taken by a process on receipt of a specific
-signal.
-
-
-''signum'' specifies the signal and can be any valid
-signal except __SIGKILL__ and
-__SIGSTOP__.
-
-
-If ''act'' is non-null, the new action for signal
-''signum'' is installed from ''act''. If ''oldact''
-is non-null, the previous action is saved in
-''oldact''.
-
-
-The __sigaction__ structure is defined as something
-like
-
-
-struct sigaction {
-void (*sa_handler)(int);
-void (*sa_sigaction)(int, siginfo_t *, void *);
-sigset_t sa_mask;
-int sa_flags;
-void (*sa_restorer)(void);
-}
-
-
-On some architectures a union is involved - do not assign to
-both ''sa_handler'' and ''sa_sigaction''.
-
-
-The ''sa_restorer'' element is obsolete and should not be
-used. POSIX does not specify a ''sa_restorer''
-element.
-
-
-''sa_handler'' specifies the action to be associated with
-''signum'' and may be __SIG_DFL__ for the default
-action, __SIG_IGN__ to ignore this signal, or a pointer
-to a signal handling function.
-
-
-''sa_mask'' gives a mask of signals which should be
-blocked during execution of the signal handler. In addition,
-the signal which triggered the handler will be blocked,
-unless the __SA_NODEFER__ or __SA_NOMASK__ flags are
-used.
-
-
-''sa_flags'' specifies a set of flags which modify the
-behaviour of the signal handling process. It is formed by
-the bitwise OR of zero or more of the
-following:
-
-
-__SA_NOCLDSTOP__
-
-
-If ''signum'' is __SIGCHLD__, do not receive
-notification when child processes stop (i.e., when child
-processes receive one of __SIGSTOP__, __SIGTSTP__,
-__SIGTTIN__ or __SIGTTOU__).
-
-
-__SA_ONESHOT__ or __SA_RESETHAND__
-
-
-Restore the signal action to the default state once the
-signal handler has been called. (This is the default
-behavior of the signal(2) system call.)
-
-
-__SA_RESTART__
-
-
-Provide behaviour compatible with BSD signal semantics by
-making certain system calls restartable across
-signals.
-
-
-__SA_NOMASK__ or __SA_NODEFER__
-
-
-Do not prevent the signal from being received from within
-its own signal handler.
-
-
-__SA_SIGINFO__
-
-
-The signal handler takes 3 arguments, not one. In this case,
-''sa_sigaction'' should be set instead of
-''sa_handler''. (The sa_sigaction field was added in
-Linux 2.1.86.)
-
-
-The ''siginfo_t'' parameter to ''sa_sigaction'' is a
-struct with the following elements
-
-
-siginfo_t {
-int si_signo; /* Signal number */
-int si_errno; /* An errno value */
-int si_code; /* Signal code */
-pid_t si_pid; /* Sending process ID */
-uid_t si_uid; /* Real user ID of sending process */
-int si_status; /* Exit value or signal */
-clock_t si_utime; /* User time consumed */
-clock_t si_stime; /* System time consumed */
-sigval_t si_value; /* Signal value */
-int si_int; /* POSIX.1b signal */
-void * si_ptr; /* POSIX.1b signal */
-void * si_addr; /* Memory location which caused fault */
-int si_band; /* Band event */
-int si_fd; /* File descriptor */
-}
-
-
-''si_signo'', ''si_errno'' and ''si_code'' are
-defined for all signals. The rest of the struct may be a
-union, so that one should only read the fields that are
-meaningful for the given signal. kill(2), POSIX.1b
-signals and SIGCHLD fill in ''si_pid'' and ''si_uid''.
-SIGCHLD also fills in ''si_status'', ''si_utime'' and
-''si_stime''. ''si_int'' and ''si_ptr'' are
-specified by the sender of the POSIX.1b signal. SIGILL,
-SIGFPE, SIGSEGV and SIGBUS fill in ''si_addr'' with the
-address of the fault. SIGPOLL fills in ''si_band'' and
-''si_fd''.
-
-
-''si_code'' indicates why this signal was sent. It is a
-value, not a bitmask. The values which are possible for any
-signal are listed in this table:
-
-
-The __sigprocmask__ call is used to change the list of currently blocked signals. The behaviour of the call is dependent on the value of ''how'', as follows.
-
-
-__SIG_BLOCK__
-
-
-The set of blocked signals is the union of the current set
-and the ''set'' argument.
-
-
-__SIG_UNBLOCK__
-
-
-The signals in ''set'' are removed from the current set
-of blocked signals. It is legal to attempt to unblock a
-signal which is not blocked.
-
-
-__SIG_SETMASK__
-
-
-The set of blocked signals is set to the argument
-''set''.
-
-
-If ''oldset'' is non-null, the previous value of the
-signal mask is stored in ''oldset''.
-
-
-The __sigpending__ call allows the examination of pending
-signals (ones which have been raised while blocked). The
-signal mask of pending signals is stored in
-''set''.
-
-
-The __sigsuspend__ call temporarily replaces the signal
-mask for the process with that given by ''mask'' and then
-suspends the process until a signal is
-received.
-!!RETURN VALUE
-
-
-The functions __sigaction__, __sigprocmask__,
-__sigpending__ and __sigsuspend__ return 0 on success
-and -1 on error. (In the case of __sigsuspend__ there
-will be no success, and only the error return with
-__EINTR__ is possible.)
-!!ERRORS
-
-
-__EINVAL__
-
-
-An invalid signal was specified. This will also be generated
-if an attempt is made to change the action for
-__SIGKILL__ or __SIGSTOP__, which cannot be
-caught.
-
-
-__EFAULT__
-
-
-''act'', ''oldact'', ''set'' or ''oldset'' point
-to memory which is not a valid part of the process address
-space.
-
-
-__EINTR__
-
-
-System call was interrupted.
-!!NOTES
-
-
-It is not possible to block __SIGKILL__ or __SIGSTOP__
-with the sigprocmask call. Attempts to do so will be
-silently ignored.
-
-
-According to POSIX, the behaviour of a process is undefined
-after it ignores a SIGFPE, SIGILL, or SIGSEGV signal that
-was not generated by the ''kill()'' or the ''raise()''
-functions. Integer division by zero has undefined result. On
-some architectures it will generate a SIGFPE signal. (Also
-dividing the most negative integer by -1 may generate
-SIGFPE.) Ignoring this signal might lead to an endless
-loop.
-
-
-POSIX (B.3.3.1.3) disallows setting the action for SIGCHLD
-to SIG_IGN. The BSD and SYSV behaviours differ, causing BSD
-software that sets the action for SIGCHLD to SIG_IGN to fail
-on Linux.
-
-
-The POSIX spec only defines __SA_NOCLDSTOP__. Use of
-other ''sa_flags'' is non-portable.
-
-
-The __SA_RESETHAND__ flag is compatible with the SVr4
-flag of the same name.
-
-
-The __SA_NODEFER__ flag is compatible with the SVr4 flag
-of the same name under kernels 1.3.9 and newer. On older
-kernels the Linux implementation allowed the receipt of any
-signal, not just the one we are installing (effectively
-overriding any ''sa_mask'' settings).
-
-
-The __SA_RESETHAND__ and __SA_NODEFER__ names for SVr4
-compatibility are present only in library versions 3..9 and
-greater.
-
-
-The __SA_SIGINFO__ flag is specified by POSIX.1b. Support
-for it was added in Linux 2.2.
-
-
-__sigaction__ can be called with a null second argument
-to query the current signal handler. It can also be used to
-check whether a given signal is valid for the current
-machine by calling it with null second and third
-arguments.
-
-
-See sigsetops(3) for details on manipulating signal
-sets.
-!!CONFORMING TO
-
-
-POSIX, SVr4. SVr4 does not document the EINTR
-condition.
-!!UNDOCUMENTED
-
-
-Before the introduction of __SA_SIGINFO__ it was also
-possible to get some additional information, namely by using
-a sa_handler with second argument of type ''struct
-sigcontext''. See the relevant kernel sources for details.
-This use is obsolete now.
-!!SEE ALSO
-
-
-kill(1), kill(2), killpg(2),
-pause(2), raise(3), siginterrupt(3),
-signal(2), signal(7), sigsetops(3),
-sigvec
(2)
-----
+See
sigaction(2)