SIGACTIO.2
资源名称:os_source.zip [点击查看]
上传用户:datang2001
上传日期:2007-02-01
资源大小:53269k
文件大小:7k
源码类别:
操作系统开发
开发平台:
C/C++
- SIGACTION(2) Minix Programmer's Manual SIGACTION(2)
- NAME
- sigaction, signal - manage signal state and handlers
- SYNOPSIS
- #include <signal.h>
- int sigaction(int sig, const struct sigaction *act, struct sigaction
- *oact)
- void (*signal(int sig, void (*handler)(int)))(int);
- DESCRIPTION
- Sigaction() is used to examine, set, or modify the attributes of a
- signal. The argument sig is the signal in question. The act argument
- points to a structure containing the new attributes of the signal, the
- structure pointed to by oact will receive the old attributes that were in
- effect before the call.
- The act and oact arguments may be NULL to indicate that either no new
- attributes are to be set, or that the old attributes are not of interest.
- The structure containing the signal attributes is defined in <signal.h>
- and looks like this:
- struct sigaction {
- void (*sa_handler)(int sig);
- sigset_t sa_mask;
- int sa_flags;
- };
- The sa_handler field contains the address of a signal handler, a function
- that is called when the process is signalled, or one of these special
- constants:
- SIG_DFL Default signal handling is to be performed. This usually
- means that the process is killed, but some signals may be
- ignored by default.
- SIG_IGN Ignore the signal.
- The sa_mask field indicates a set of signals that must be blocked when
- the signal is being handled. Whether the signal sig itself is blocked
- when being handled is not controlled by this mask. The mask is of a
- "signal set" type that is to be manipulated by the sigset(3) functions.
- How the signal is handled precisely is specified by bits in sa_flags. If
- none of the flags is set then the handler is called when the signal
- arrives. The signal is blocked during the call to the handler, and
- unblocked when the handler returns. A system call that is interrupted
- returns -1 with errno set to EINTR. The following bit flags can be set
- to modify this behaviour:
- 1
- SIGACTION(2) Minix Programmer's Manual SIGACTION(2)
- SA_RESETHAND Reset the signal handler to SIG_DFL when the signal is
- caught.
- SA_NODEFER Do not block the signal on entry to the handler.
- SA_COMPAT Handle the signal in a way that is compatible with the the
- old signal() call.
- The old signal() signal system call sets a signal handler for a given
- signal and returns the old signal handler. No signals are blocked, the
- flags are SA_RESETHAND | SA_NODEFER | SA_COMPAT. New code should not use
- signal(). Note that signal() and all of the SA_* flags are Minix
- extensions.
- Signal handlers are reset to SIG_DFL on an execve(2). Signals that are
- ignored stay ignored.
- Signals
- Minix knows about the following signals:
- signal num notes description
- SIGHUP 1 k Hangup
- SIGINT 2 k Interrupt (usually DEL or CTRL-C)
- SIGQUIT 3 kc Quit (usually CTRL-)
- SIGILL 4 kc Illegal instruction
- SIGTRAP 5 xkc Trace trap
- SIGABRT 6 kc Abort program
- SIGFPE 8 k Floating point exception
- SIGKILL 9 k Kill
- SIGUSR1 10 k User defined signal #1
- SIGSEGV 11 kc Segmentation fault
- SIGUSR2 12 k User defined signal #2
- SIGPIPE 13 k Write to a pipe with no reader
- SIGALRM 14 k Alarm clock
- SIGTERM 15 k Terminate (default for kill(1))
- SIGCHLD 17 pvi Child process terminated
- SIGCONT 18 p Continue if stopped
- SIGSTOP 19 ps Stop signal
- SIGTSTP 20 ps Interactive stop signal
- SIGTTIN 21 ps Background read
- SIGTTOU 22 ps Background write
- SIGWINCH 23 xvi Window size change
- The letters in the notes column indicate:
- 2
- SIGACTION(2) Minix Programmer's Manual SIGACTION(2)
- k The process is killed if the signal is not caught.
- c The signal causes a core dump.
- i The signal is ignored if not caught.
- v Only Minix-vmd implements this signal.
- x Minix extension, not defined by POSIX.
- p These signals are not implemented, but POSIX requires that they are
- defined.
- s The process should be stopped, but is killed instead.
- The SIGKILL signal cannot be caught or ignored. The SIGILL and SIGTRAP
- signals cannot be automatically reset. The system silently enforces
- these restrictions. This may or may not be reflected by the attributes
- of these signals and the signal masks.
- Types
- POSIX prescribes that <sys/types.h> has the following definition:
- typedef int (*sighandler_t)(int)
- With this type the following declarations can be made:
- sighandler_t sa_handler;
- sighandler_t signal(int sig, sighandler_t handler);
- This may help you to understand the earlier declarations better. The
- sighandler_t type is also very useful in old style C code that is
- compiled by a compiler for standard C.
- SEE ALSO
- kill(1), kill(2), pause(2), sigprocmask(2), sigsuspend(2), sigpending(2),
- sigset(3).
- DIAGNOSTICS
- Sigaction() returns 0 on success or -1 on error. Signal() returns the
- old handler on success or SIG_ERR on error. The error code may be:
- EINVAL Bad signal number.
- EFAULT Bad act or oact addresses.
- 3
- SIGACTION(2) Minix Programmer's Manual SIGACTION(2)
- AUTHOR
- Kees J. Bot (kjb@cs.vu.nl)
- 4