diff options
Diffstat (limited to 'ocaml-binary-annot/config/auto-aux/signals.c')
| -rw-r--r-- | ocaml-binary-annot/config/auto-aux/signals.c | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/ocaml-binary-annot/config/auto-aux/signals.c b/ocaml-binary-annot/config/auto-aux/signals.c new file mode 100644 index 0000000000..df0a8b0b50 --- /dev/null +++ b/ocaml-binary-annot/config/auto-aux/signals.c @@ -0,0 +1,68 @@ +/***********************************************************************/ +/* */ +/* Objective Caml */ +/* */ +/* Xavier Leroy, projet Cristal, INRIA Rocquencourt */ +/* */ +/* Copyright 1996 Institut National de Recherche en Informatique et */ +/* en Automatique. All rights reserved. This file is distributed */ +/* under the terms of the GNU Library General Public License, with */ +/* the special exception on linking described in file ../../LICENSE. */ +/* */ +/***********************************************************************/ + +/* $Id$ */ + +/* To determine the semantics of signal handlers + (System V: signal is reset to default behavior on entrance to the handler + BSD: signal handler remains active). */ + +#include <stdio.h> +#include <signal.h> + +/* Find a signal that is ignored by default */ + +#ifdef SIGCHLD +#define IGNSIG SIGCHLD +#else +#ifdef SIGIO +#define IGNSIG SIGIO +#else +#ifdef SIGCLD +#define IGNSIG SIGCLD +#else +#ifdef SIGPWR +#define IGNSIG SIGPWR +#endif +#endif +#endif +#endif + +#ifdef IGNSIG + +int counter; + +void sig_handler(int dummy) +{ + counter++; +} + +int main(int argc, char **argv) +{ + signal(IGNSIG, sig_handler); + counter = 0; + kill(getpid(), IGNSIG); + kill(getpid(), IGNSIG); + return (counter == 2 ? 0 : 1); +} + +#else + +/* If no suitable signal was found, assume System V */ + +int main(int argc, char ** argv) +{ + return 1; +} + +#endif |
