1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
|
/*
Copyright (c) 1990 Regents of the University of California.
All rights reserved.
*/
/* NetWare can not use this implementation of abort. It provides its
own version of abort in clib.nlm. If we can not use clib.nlm, then
we must write abort in sys/netware. */
#ifdef ABORT_PROVIDED
int _dummy_abort = 1;
#else
/*
FUNCTION
<<abort>>---abnormal termination of a program
INDEX
abort
SYNOPSIS
#include <stdlib.h>
void abort(void);
DESCRIPTION
Use <<abort>> to signal that your program has detected a condition it
cannot deal with. Normally, <<abort>> ends your program's execution.
Before terminating your program, <<abort>> raises the exception <<SIGABRT>>
(using `<<raise(SIGABRT)>>'). If you have used <<signal>> to register
an exception handler for this condition, that handler has the
opportunity to retain control, thereby avoiding program termination.
In this implementation, <<abort>> does not perform any stream- or
file-related cleanup (the host environment may do so; if not, you can
arrange for your program to do its own cleanup with a <<SIGABRT>>
exception handler).
RETURNS
<<abort>> does not return to its caller.
PORTABILITY
ANSI C requires <<abort>>.
Supporting OS subroutines required: <<_exit>> and optionally, <<write>>.
*/
#include <stdlib.h>
#include <unistd.h>
#include <signal.h>
void
abort(void)
{
#ifdef ABORT_MESSAGE
write(2, "Abort called\n", sizeof("Abort called\n") - 1);
#endif
while (1) {
raise(SIGABRT);
_exit(1);
}
}
#endif
|