sigvec man page on SunOS

Man page or keyword search:  
man Server   20652 pages
apropos Keyword Search (all sections)
Output format
SunOS logo
[printable version]

sigvec(3UCB)	   SunOS/BSD Compatibility Library Functions	  sigvec(3UCB)

NAME
       sigvec - software signal facilities

SYNOPSIS
       /usr/ucb/cc [ flag ... ] file...
       #include <signal.h>

       int sigvec(sig, nvec, ovec)
       int sig;
       struct sigvec *nvec, *ovec;

DESCRIPTION
       The system defines a set of signals that may be delivered to a process.
       Signal delivery resembles the occurrence of a hardware  interrupt:  the
       signal  is blocked from further occurrence, the current process context
       is saved, and a new one is built.  A process may specify a  handler  to
       which  a signal is delivered, or specify that a signal is to be blocked
       or ignored. A process may also specify that a default action is	to  be
       taken  by  the  system  when a signal occurs. Normally, signal handlers
       execute on the current stack of the process.  This may be changed, on a
       per-handler basis, so that signals are taken on a special signal stack.

       All  signals  have  the same priority. Signal routines execute with the
       signal that caused their invocation to be blocked,  but	other  signals
       may  yet	 occur.	 A  global signal mask defines the set of signals cur‐
       rently blocked from delivery to a  process.   The  signal  mask	for  a
       process is initialized from that of its parent (normally 0).  It may be
       changed with a sigblock() or sigsetmask() call, or  when	 a  signal  is
       delivered to the process.

       A  process may also specify a set of flags for a signal that affect the
       delivery of that signal.

       When a signal condition arises for a process, the signal is added to  a
       set of signals pending for the process.	If the signal is not currently
       blocked by the process then it is delivered to  the  process.   When  a
       signal  is  delivered, the current state of the process is saved, a new
       signal mask is calculated (as described below), and the signal  handler
       is  invoked.  The call to the handler is arranged so that if the signal
       handling routine returns normally the process will resume execution  in
       the  context  from before the signal's delivery.	 If the process wishes
       to resume in a different context, then it must arrange to  restore  the
       previous context itself.

       When  a signal is delivered to a process a new signal mask is installed
       for the duration of the process' signal handler (or until a  sigblock()
       or  sigsetmask() call is made).	This mask is formed by taking the cur‐
       rent signal mask, adding the signal to be delivered, and ORing  in  the
       signal mask associated with the handler to be invoked.

       The  action  to be taken when the signal is delivered is specified by a
       sigvec() structure, which includes the following members:

	 void	   (*sv_handler)();	   /* signal handler */
	 int	   sv_mask;	   /* signal mask to apply */
	 int	   sv_flags;	   /* see signal options */
	 #define   SV_ONSTACK	   /* take signal on signal stack */
	 #define   SV_INTERRUPT	   /* do not restart system on signal
				     return */
	 #define   SV_RESETHAND	   /* reset handler to SIG_DFL when
				     signal taken*/

       If the SV_ONSTACK bit is set in the flags for that signal,  the	system
       will  deliver  the  signal to the process on the signal stack specified
       with sigstack(3UCB) rather than delivering the signal  on  the  current
       stack.

       If  nvec	 is not a NULL pointer, sigvec() assigns the handler specified
       by sv_handler(), the mask specified by sv_mask(), and the flags	speci‐
       fied by sv_flags() to the specified signal.  If nvec is a NULL pointer,
       sigvec() does not change the handler, mask, or flags for the  specified
       signal.

       The mask specified in nvec is not allowed to block SIGKILL, SIGSTOP, or
       SIGCONT. The system enforces this restriction silently.

       If ovec is not a NULL pointer, the handler, mask, and flags  in	effect
       for the signal before the call to sigvec() are returned to the user.  A
       call to sigvec() with nvec a NULL pointer and ovec not a	 NULL  pointer
       can  be	used to determine the handling information currently in effect
       for a signal without changing that information.

       The following is a list of all signals with names  as  in  the  include
       file <signal.h>:

       SIGHUP	    hangup

       SIGINT	    interrupt

       SIGQUIT*	    quit

       SIGILL*	    illegal instruction

       SIGTRAP*	    trace trap

       SIGABRT*	    abort (generated by abort(3C) routine)

       SIGEMT*	    emulator trap

       SIGFPE*	    arithmetic exception

       SIGKILL	    kill (cannot be caught, blocked, or ignored)

       SIGBUS*	    bus error

       SIGSEGV*	    segmentation violation

       SIGSYS*	    bad argument to function

       SIGPIPE	    write on a pipe or other socket with no one to read it

       SIGALRM	    alarm clock

       SIGTERM	    software termination signal

       SIGURG*	    urgent condition present on socket

       SIGSTOP**    stop (cannot be caught, blocked, or ignored)

       SIGTSTP**    stop signal generated from keyboard

       SIGCONT*	    continue after stop (cannot be blocked)

       SIGCHLD*	    child status has changed

       SIGTTIN**    background read attempted from control terminal

       SIGTTOU**    background write attempted to control terminal

       SIGIO*	    I/O is possible on a descriptor (see fcntl(2))

       SIGXCPU	    cpu time limit exceeded (see getrlimit(2))

       SIGXFSZ	    file size limit exceeded (see getrlimit(2))

       SIGVTALRM    virtual time alarm; see setitimer() on getitimer(2)

       SIGPROF	    profiling timer alarm; see setitimer() on getitimer(2)

       SIGWINCH*    window changed (see termio(7I))

       SIGLOST	    resource lost (see lockd(1M))

       SIGUSR1	    user-defined signal 1

       SIGUSR2	    user-defined signal 2

       The  starred signals in the list above cause a core image if not caught
       or ignored.

       Once a signal handler is installed, it remains installed until  another
       sigvec()	 call  is  made,  or  an  execve(2)  is	 performed, unless the
       SV_RESETHAND bit is set in the flags for that signal.   In  that	 case,
       the  value  of the handler for the caught signal will be set to SIG_DFL
       before entering the signal-catching function, unless the signal is SIG‐
       ILL,  SIGPWR,  or  SIGTRAP.  Also, if this bit is set, the bit for that
       signal in the signal mask will not be set; unless the signal mask asso‐
       ciated with that signal blocks that signal, further occurrences of that
       signal will not be blocked. The SV_RESETHAND flag is not	 available  in
       4.2BSD,	hence  it  should  not	be  used  if backward compatibility is
       needed.

       The default action for a signal may be reinstated by setting  the  sig‐
       nal's  handler  to SIG_DFL; this default is termination except for sig‐
       nals marked with * or **.  Signals marked with * are discarded  if  the
       action is SIG_DFL; signals marked with ** cause the process to stop. If
       the process is terminated, a "core image" will be made in  the  current
       working	directory  of  the  receiving process if the signal is one for
       which an asterisk appears in the above list (see core(4)).

       If the handler for that signal is SIG_IGN, the signal  is  subsequently
       ignored, and pending instances of the signal are discarded.

       If  a  caught  signal occurs during certain functions, the call is nor‐
       mally restarted. The call can be forced to terminate  prematurely  with
       an  EINTR error return by setting the SV_INTERRUPT bit in the flags for
       that signal. The SV_INTERRUPT flag is not available in 4.2BSD, hence it
       should  not  be	used if backward compatibility is needed. The affected
       functions are read(2) or write(2) on a slow device (such as a  terminal
       or pipe or other socket, but not a file) and during a wait(3C).

       After  a fork(2) or vfork(2) the child inherits all signals, the signal
       mask, the signal stack, and the restart/interrupt and reset-signal-han‐
       dler flags.

       The  execve(2)  call  resets  all  caught signals to default action and
       resets all signals to be caught on  the	user  stack.  Ignored  signals
       remain  ignored;	 the signal mask remains the same; signals that inter‐
       rupt functions continue to do so.

       The accuracy  of	 addr  is  machine  dependent.	For  example,  certain
       machines	 may supply an address that is on the same page as the address
       that caused the fault. If an appropriate addr  cannot  be  computed  it
       will be set to SIG_NOADDR.

RETURN VALUES
       A  0  value  indicates that the call succeeded. A −1 return value indi‐
       cates that an error occurred and errno is set to indicate the reason.

ERRORS
       sigvec() will fail and no new signal handler will be installed  if  one
       of the following occurs:

       EFAULT	 Either	 nvec or ovec is not a NULL pointer and points to mem‐
		 ory that is not a valid part of the process address space.

       EINVAL	 sig is not a valid signal number, or, SIGKILL, or SIGSTOP.

SEE ALSO
       cc(1B),	intro(2),  exec(2),  fcntl(2),	fork(2),  getitimer(2),	 getr‐
       limit(2),  ioctl(2),  kill(2),  read(2),	 umask(2), vfork(2), write(2),
       ptrace(3C),  setjmp(3C)	 sigblock(3UCB),   signal(3C),	 signal(3UCB),
       sigstack(3UCB), wait(3C), wait(3UCB), core(4), streamio(7I), termio(7I)

NOTES
       Use of these interfaces should be restricted to only applications writ‐
       ten on BSD platforms.  Use of these interfaces with any of  the	system
       libraries or in multi-thread applications is unsupported.

       SIGPOLL	is  a  synonym	for  SIGIO. A SIGIO will be issued when a file
       descriptor corresponding	 to  a	STREAMS	 (see  intro(2))  file	has  a
       "selectable"  event  pending.  Unless that descriptor has been put into
       asynchronous mode (see fcntl(2)), a process  may	 specifically  request
       that  this  signal  be  sent  using  the	 I_SETSIG  ioctl(2)  call (see
       streamio(7I)). Otherwise, the process will never receive SIGPOLLs0.

       The handler routine can be declared:

	 void handler(int sig, int code, struct sigcontext *scp,
	     char *addr);

       Here sig is the signal number; code is a parameter of  certain  signals
       that  provides  additional  detail;  scp is a pointer to the sigcontext
       structure (defined in signal.h),	 used  to  restore  the	 context  from
       before the signal; and addr is additional address information.

       The signals SIGKILL, SIGSTOP, and SIGCONT cannot be ignored.

SunOS 5.10			  30 Oct 2007			  sigvec(3UCB)
[top]

List of man pages available for SunOS

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net