sigvec man page on NeXTSTEP

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


SIGVEC(2)							     SIGVEC(2)

NAME
       sigvec - software signal facilities

SYNOPSIS
       #include <signal.h>

       struct sigvec {
       int  (*sv_handler)();
       int  sv_mask;
       int  sv_flags;
       };

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

DESCRIPTION
       The system defines a set of signals that may be delivered to a process.
       Signal delivery resembles the occurence 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 blocked, but other signals may  yet
       occur.	A  global  signal  mask	 defines  the set of signals currently
       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(2) or sigsetmask(2) call, or when a signal is delivered
       to the process.

       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  current
       signal  mask,  adding  the  signal  to  be delivered, and or'ing in the
       signal mask associated with the handler to be invoked.

       Sigvec assigns a handler for a specific signal.	If vec is non-zero, it
       specifies  a  handler  routine  and mask to be used when delivering the
       specified signal.  Further, if the SV_ONSTACK bit is set	 in  sv_flags,
       the  system  will  deliver the signal to the process on a signal stack,
       specified with sigstack(2).  If ovec is non-zero, the previous handling
       information for the signal is returned to the user.

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

       SIGHUP	 1    hangup
       SIGINT	 2    interrupt
       SIGQUIT	 3*   quit
       SIGILL	 4*   illegal instruction
       SIGTRAP	 5*   trace trap
       SIGIOT	 6*   IOT instruction
       SIGEMT	 7*   EMT instruction
       SIGFPE	 8*   floating point exception
       SIGKILL	 9    kill (cannot be caught, blocked, or ignored)
       SIGBUS	 10*  bus error
       SIGSEGV	 11*  segmentation violation
       SIGSYS	 12*  bad argument to system call
       SIGPIPE	 13   write on a pipe with no one to read it
       SIGALRM	 14   alarm clock
       SIGTERM	 15   software termination signal
       SIGURG	 16@  urgent condition present on socket
       SIGSTOP	 17|+'stop (cannot be caught, blocked, or ignored)
       SIGTSTP	 18|+'stop signal generated from keyboard
       SIGCONT	 19@  continue after stop (cannot be blocked)
       SIGCHLD	 20@  child status has changed
       SIGTTIN	 21|+'background read attempted from control terminal
       SIGTTOU	 22|+'background write attempted to control terminal
       SIGIO	 23@  i/o is possible on a descriptor (see fcntl(2))
       SIGXCPU	 24   cpu time limit exceeded (see setrlimit(2))
       SIGXFSZ	 25   file size limit exceeded (see setrlimit(2))
       SIGVTALRM 26   virtual time alarm (see setitimer(2))
       SIGPROF	 27   profiling timer alarm (see setitimer(2))
       SIGWINCH	 28@  window size change
       SIGUSR1	 30   user defined signal 1
       SIGUSR2	 31   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.  The default	action
       for  a  signal may be reinstated by setting sv_handler to SIG_DFL; this
       default is termination (with a core image for starred  signals)	except
       for  signals marked with @ or |+'.  Signals marked with @ are discarded
       if the action is SIG_DFL; signals marked with |+' cause the process  to
       stop.  If sv_handler is SIG_IGN the signal is subsequently ignored, and
       pending instances of the signal are discarded.

       If a caught signal occurs during certain	 system	 calls,	 the  call  is
       normally	 restarted.   The  call can be forced to terminate prematurely
       with an EINTR error return by setting the SV_INTERRUPT bit in sv_flags.
       The  affected  system  calls  are  read(2) or write(2) on a slow device
       (such as a terminal; but not a file) and during a wait(2).

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

       Execve(2)  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 interrupt
       system calls continue to do so.

NOTES
       The mask specified in vec is not allowed to block SIGKILL, SIGSTOP,  or
       SIGCONT.	 This is done silently by the system.

       The  SV_INTERRUPT  flag is not available in 4.2BSD, hence it should not
       be used if backward compatibility is needed.

RETURN VALUE
       A 0 value indicated  that  the  call  succeeded.	  A  -1	 return	 value
       indicates an error occurred and errno is set to indicated the reason.

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

       [EFAULT]	      Either vec or ovec points to memory that is not a	 valid
		      part of the process address space.

       [EINVAL]	      Sig is not a valid signal number.

       [EINVAL]	      An  attempt  is  made  to ignore or supply a handler for
		      SIGKILL or SIGSTOP.

       [EINVAL]	      An attempt is made to ignore SIGCONT (by default SIGCONT
		      is ignored).

SEE ALSO
       kill(1),	 ptrace(2),  kill(2), sigblock(2), sigsetmask(2), sigpause(2),
       sigstack(2), sigvec(2), setjmp(3), siginterrupt(3), tty(4)

4th Berkeley Distribution	January 8, 1986			     SIGVEC(2)
[top]

List of man pages available for NeXTSTEP

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