1 /* Emergency actions in case of a fatal signal.
2 Copyright (C) 2003 Free Software Foundation, Inc.
3 Written by Bruno Haible <bruno@clisp.org>, 2003.
5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2, or (at your option)
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software Foundation,
17 Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
25 /* It is often useful to do some cleanup action when a usually fatal signal
26 terminates the process, like removing a temporary file or killing a
27 subprocess that may be stuck waiting for a device, pipe or network input.
28 Such signals are SIGHUP, SIGINT, SIGPIPE, SIGTERM, and possibly others.
29 The limitation of this facility is that it cannot work for SIGKILL. */
31 /* Register a cleanup function to be executed when a catchable fatal signal
33 extern void at_fatal_signal (void (*function) (void));
36 /* Sometimes it is necessary to block the usually fatal signals while the
37 data structures being accessed by the cleanup action are being built or
38 reorganized. This is the case, for example, when a temporary file or
39 directory is created through mkstemp() or mkdtemp(), because these
40 functions create the temporary file or directory _before_ returning its
41 name to the application. */
43 /* Temporarily delay the catchable fatal signals. */
44 extern void block_fatal_signals (void);
46 /* Stop delaying the catchable fatal signals. */
47 extern void unblock_fatal_signals (void);