/*
* abort function in c
* abort function in c
*/
abort function
causes abnormal program termination
#include
<stdlib.h>
void
abort(void);
Return:
This
function never returns
This
function sends the SIGABRT
signal to the
caller. (Processes should not ignore this signal.) ISO C states that calling abort will deliver an unsuccessful
termination notification to the host environment by calling raise(SIGABRT).
ISO
C requires that if the signal is caught and the signal handler returns, abort still doesn't return to its
caller. If this signal is caught, the only way the signal handler can't return
is if it calls exit, _exit, _Exit, longjmp, or siglongjmp. (Section 10.15 discusses
the differences between longjmp
and siglongjmp.) POSIX.1 also specifies
that abort overrides the blocking or
ignoring of the signal by the process.
The
intent of letting the process catch the SIGABRT is to allow it to perform any cleanup that it wants
to do before the process terminates. If the process doesn't terminate itself
from this signal handler, POSIX.1 states that, when the signal handler returns,
abort terminates the process.
The
ISO C specification of this function leaves it up to the implementation as to
whether output streams are flushed and whether temporary files are deleted. POSIX.1 goes further and requires that if the call to abort terminates the process, then
the effect on the open standard I/O streams in the process will be the same as
if the process had called fclose
on each stream
before terminating.
Earlier
versions of System V generated the SIGIOT signal from the abort function. Furthermore, it was possible for a process
to ignore this signal or to catch it and return from the signal handler, in
which case abort
returned to its
caller.
4.3BSD
generated the SIGILL
signal. Before
doing this, the 4.3BSD function unblocked the signal and reset its disposition
to SIG_DFL (terminate with core file). This prevented a
process from either ignoring the signal or catching it.
Historically,
implementations of abort
differ in how
they deal with standard I/O streams. For defensive programming and improved
portability, if we want standard I/O streams to be flushed, we specifically do
it before calling abort.
Since
most UNIX System implementations of tmpfile call unlink immediately
after creating the file, the ISO C warning about temporary files does not
usually concern us.
See Also
POSIX Signal Tutorial and example codes
See Also
POSIX Signal Tutorial and example codes
No comments:
Post a Comment