htdb

util_sig.cc

Go to the documentation of this file.
00001 /*-
00002  * See the file LICENSE for redistribution information.
00003  *
00004  * Copyright (c) 2000
00005  * Sleepycat Software. All rights reserved.
00006  */
00007 
00008 #ifdef HAVE_CONFIG_H
00009 #include "config.h"
00010 #endif /* HAVE_CONFIG_H */
00011 
00012 #include <sys/types.h>
00013 #include <signal.h>
00014 
00015 extern "C" {
00016 #include "db_int.h"
00017 #include "common_ext.h"
00018 }
00019 
00020 static int interrupt;
00021 static void onint(int);
00022 
00023 /*
00024  * onint --
00025  * Interrupt signal handler.
00026  */
00027 static void onint(int signo)
00028 {
00029 if ((interrupt = signo) == 0)
00030 interrupt = SIGINT;
00031 }
00032 
00033 void __db_util_siginit()
00034 {
00035 /*
00036  * Initialize the set of signals for which we want to clean up.
00037  * Generally, we try not to leave the shared regions locked if
00038  * we can.
00039  */
00040 #ifdef SIGHUP
00041 (void) signal(SIGHUP, onint);
00042 #endif
00043 (void) signal(SIGINT, onint);
00044 #ifdef SIGPIPE
00045 (void) signal(SIGPIPE, onint);
00046 #endif
00047 (void) signal(SIGTERM, onint);
00048 }
00049 
00050 int __db_util_interrupted()
00051 {
00052 return (interrupt != 0);
00053 }
00054 
00055 void __db_util_sigresend()
00056 {
00057 /* Resend any caught signal. */
00058 if (__db_util_interrupted != 0) {
00059 (void) signal(interrupt, SIG_DFL);
00060 (void) raise(interrupt);
00061 /* NOTREACHED */
00062 }
00063 }

Generated on Sun Jun 8 10:56:39 2008 for GNUmifluz by doxygen 1.5.5

AltStyle によって変換されたページ (->オリジナル) /