csignals.H

Go to the documentation of this file.
00001 /*!@file Util/csignals.H trivial wrapper for catching ANSI C signals */
00002 
00003 // //////////////////////////////////////////////////////////////////// //
00004 // The iLab Neuromorphic Vision C++ Toolkit - Copyright (C) 2000-2005   //
00005 // by the University of Southern California (USC) and the iLab at USC.  //
00006 // See http://iLab.usc.edu for information about this project.          //
00007 // //////////////////////////////////////////////////////////////////// //
00008 // Major portions of the iLab Neuromorphic Vision Toolkit are protected //
00009 // under the U.S. patent ``Computation of Intrinsic Perceptual Saliency //
00010 // in Visual Environments, and Applications'' by Christof Koch and      //
00011 // Laurent Itti, California Institute of Technology, 2001 (patent       //
00012 // pending; application number 09/912,225 filed July 23, 2001; see      //
00013 // http://pair.uspto.gov/cgi-bin/final/home.pl for current status).     //
00014 // //////////////////////////////////////////////////////////////////// //
00015 // This file is part of the iLab Neuromorphic Vision C++ Toolkit.       //
00016 //                                                                      //
00017 // The iLab Neuromorphic Vision C++ Toolkit is free software; you can   //
00018 // redistribute it and/or modify it under the terms of the GNU General  //
00019 // Public License as published by the Free Software Foundation; either  //
00020 // version 2 of the License, or (at your option) any later version.     //
00021 //                                                                      //
00022 // The iLab Neuromorphic Vision C++ Toolkit is distributed in the hope  //
00023 // that it will be useful, but WITHOUT ANY WARRANTY; without even the   //
00024 // implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      //
00025 // PURPOSE.  See the GNU General Public License for more details.       //
00026 //                                                                      //
00027 // You should have received a copy of the GNU General Public License    //
00028 // along with the iLab Neuromorphic Vision C++ Toolkit; if not, write   //
00029 // to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,   //
00030 // Boston, MA 02111-1307 USA.                                           //
00031 // //////////////////////////////////////////////////////////////////// //
00032 //
00033 // Primary maintainer for this file: Rob Peters <rjpeters at usc dot edu>
00034 // $HeadURL: svn://isvn.usc.edu/software/invt/trunk/saliency/src/Util/csignals.H $
00035 // $Id: csignals.H 5685 2005-10-07 23:46:44Z rjpeters $
00036 //
00037 
00038 #ifndef UTIL_CSIGNALS_H_DEFINED
00039 #define UTIL_CSIGNALS_H_DEFINED
00040 
00041 /// Install signal handlers to catch non-fatal signals
00042 /** @param dest Location where the number of a caught signal will be
00043     stored. This is marked as 'volatile' because it will be modified
00044     by signal handlers. Typically, applications will pass a pointer to
00045     a local int variable in to catchsignals(), and then check the
00046     value of that variable in each iteration through the main loop of
00047     the application, and taking steps to exit the application if the
00048     value becomes non-zero.
00049 
00050     Note that catchsignals() only installs handlers for non-fatal
00051     signals (such as SIGHUP, SIGINT [control-c], SIGTERM [kill] and
00052     SIGALRM). The idea is that the user can interrupt an application
00053     that would otherwise be in an perpetual loop, but still give the
00054     application a chance to shut down cleanly (flushing open files,
00055     computing final stats, etc.). However, we don't trap more serious
00056     signals such as SIGQUIT, SIGABRT, SIGBUS, SIGFPE, SIGKILL, or
00057     SIGSEGV -- these usually represent a programming bug and/or the
00058     desire to generate a core dump, so catching the signal would avoid
00059     a core dump and hinder the ability to debug the context in which
00060     the signal was generated.
00061 */
00062 void catchsignals(volatile int* dest) throw();
00063 
00064 /// Get a string name for a given signal number (e.g., "SIGINT", "SIGTERM")
00065 const char* signame(int signum) throw();
00066 
00067 // ######################################################################
00068 /* So things look consistent in everyone's emacs... */
00069 /* Local Variables: */
00070 /* indent-tabs-mode: nil */
00071 /* End: */
00072 
00073 #endif // UTIL_CSIGNALS_H_DEFINED
Generated on Sun May 8 08:06:58 2011 for iLab Neuromorphic Vision Toolkit by  doxygen 1.6.3