signal(2) DG/UX 4.30 signal(2)
NAME
signal - Specify what to do upon presentation of a signal.
SYNOPSIS
#include <signal.h>
void (* signal (signal_number, action))()
int signal_number;
void (*action)();
PARAMETERS
signal_number Type of signal.
action Handler for the signal.
DESCRIPTION
This manual page describes the default signal functionality.
If you define the _BSD_SIGNAL_FLAVOR macro or if you define
only the _BSD_SOURCE macro when you compile your C
application, however, you will get the functionality
described in berksignal(3) (also found as signal(3)). For
more information about the _BSD_SIGNAL_FLAVOR and
_BSD_SOURCE macros and the functionality they provide, see
Porting Applications to the DG/UXTM System.
Signal allows the calling process to choose one of three
ways to handle the presentation of a specific signal.
Signal_number specifies the signal, and action specifies the
choice.
Signal_number may be any of the valid signals except
SIGKILL. See <sys/signal.h> (which is included into
<signal.h>) for a complete list.
Action is assigned one of three values: SIG_DFL, SIG_IGN,
or a function address. The actions prescribed by these
values are as follows.
SIG_DFL
Process termination.
The process's signal action vector entry for
signal_number is set to `default'. If the signal
signal_number was pended and signal_number is not
SIGKILL, the pended signal is lost. The set of blocked
signals remains unchanged.
When the signal signal_number is presented to the
process, it will cause the process either to terminate,
stop, ignore the signal, or terminate with a core dump
depending on the signal's type (see <sys/signal.h>).
Licensed material--property of copyright holder(s) Page 1
signal(2) DG/UX 4.30 signal(2)
If a core dump is indicated, the receiving process must
have adequate permission to do so.
SIG_IGN
Ignore signal.
The process's signal action vector entry for
signal_number is set to `ignore'. The set of blocked
signals remains unchanged.
When the signal signal_number is presented to the
process, it will be discarded.
SIGKILL cannot be ignored.
Function address
Catch signal.
The process's signal action vector entry for
signal_number is set to `catch'. If the signal
signal_number was pended and signal_number is not
SIGKILL, the pended signal is lost. The set of blocked
signals remains unchanged.
When the signal signal_number is sent to the process,
it will cause the signal handler specified by action to
be invoked.
The following attributes are set for the signal action
vector entry for signal_number:
* The signal mask addend is cleared. Thus, no additional
signals will be blocked when the signal handler is
invoked.
* The signal stack choice specifies the current execution
stack. Thus, no stack change is made.
* The new signal action is set to `default' unless the
signal's new signal action is always `unchanged'. For
signals whose new signal action is set to `default',
the occurrence of multiple signals may cause some
signals to be lost or may cause the process to
terminate.
* The restart system call choice specifies that system
calls interrupted by signal signal_number should not be
restarted.
The value of the signal action is not verified or
access checked at the time of the call. If it is
Licensed material--property of copyright holder(s) Page 2
signal(2) DG/UX 4.30 signal(2)
invalid, results are undefined when the signal is
caught.
SIGKILL cannot be caught.
After a fork, the child process inherits all software signal
structures, except that the pending signal vector is
cleared.
Exec modifies the software signal structures in the
following manner:
1) The signal action for signals set to `catch' is changed
to `default'.
2) The signal stack context is discarded.
3) All other software signal structures are unchanged.
Setting the signal SIGCLD to SIG_IGN affects exit and wait
in the following manner:
1) The calling process's child processes will be cleaned up
by the parent when the parent issues its next system call
(checks signals).
2) If the calling process later performs a wait operation,
wait will suspend the calling process until all child
processes have terminated and will return with the error
condition ECHILD.
Signal will fail, and the signal handler will be unchanged
if an error occurs.
ACCESS CONTROL
No access is required to install a signal handler.
The receiving process is granted permission to produce a
core dump file provided:
* the effective-user-id and the real-user-id of the
receiving process are equal, and
* the receiving process has adequate file system
permission to create or rewrite the core dump file.
RETURN VALUE
old_action Completed successfully. The previous signal
handler for signal_number is returned.
-1 An error occurred. Errno is set to indicate
Licensed material--property of copyright holder(s) Page 3
signal(2) DG/UX 4.30 signal(2)
the error.
EXCEPTIONS
Errno may be set to the following error code:
EINVAL Signal_number is an illegal signal number,
including SIGKILL.
SEE ALSO
kill(2), pause(2), ptrace(2), wait(2), berk_signal(3).
STANDARDS
When using m88kbcs as the Software Development Environment
target, the signal function will be emulated using BCS
system calls. Since this is an emulation requiring several
BCS system calls, a slight performance degradation may be
noticed in comparison to using signal in /lib/libc.a.
Licensed material--property of copyright holder(s) Page 4