(libc.info.gz) Signal Generation

Info Catalog (libc.info.gz) Kinds of Signals (libc.info.gz) Concepts of Signals (libc.info.gz) Delivery of Signal
 
 24.1.2 Concepts of Signal Generation
 ------------------------------------
 
 In general, the events that generate signals fall into three major
 categories: errors, external events, and explicit requests.
 
    An error means that a program has done something invalid and cannot
 continue execution.  But not all kinds of errors generate signals--in
 fact, most do not.  For example, opening a nonexistent file is an error,
 but it does not raise a signal; instead, `open' returns `-1'.  In
 general, errors that are necessarily associated with certain library
 functions are reported by returning a value that indicates an error.
 The errors which raise signals are those which can happen anywhere in
 the program, not just in library calls.  These include division by zero
 and invalid memory addresses.
 
    An external event generally has to do with I/O or other processes.
 These include the arrival of input, the expiration of a timer, and the
 termination of a child process.
 
    An explicit request means the use of a library function such as
 `kill' whose purpose is specifically to generate a signal.
 
    Signals may be generated "synchronously" or "asynchronously".  A
 synchronous signal pertains to a specific action in the program, and is
 delivered (unless blocked) during that action.  Most errors generate
 signals synchronously, and so do explicit requests by a process to
 generate a signal for that same process.  On some machines, certain
 kinds of hardware errors (usually floating-point exceptions) are not
 reported completely synchronously, but may arrive a few instructions
 later.
 
    Asynchronous signals are generated by events outside the control of
 the process that receives them.  These signals arrive at unpredictable
 times during execution.  External events generate signals
 asynchronously, and so do explicit requests that apply to some other
 process.
 
    A given type of signal is either typically synchronous or typically
 asynchronous.  For example, signals for errors are typically synchronous
 because errors generate signals synchronously.  But any type of signal
 can be generated synchronously or asynchronously with an explicit
 request.
 
Info Catalog (libc.info.gz) Kinds of Signals (libc.info.gz) Concepts of Signals (libc.info.gz) Delivery of Signal
automatically generated by info2html