FreeFOAM The Cross-Platform CFD Toolkit
Hosted by SourceForge:
Get FreeFOAM at SourceForge.net.
            Fast, secure and Free Open Source software downloads

sigSegvImpl.H

Go to the documentation of this file.
00001 /*---------------------------------------------------------------------------*\
00002   =========                 |
00003   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
00004    \\    /   O peration     |
00005     \\  /    A nd           | Copyright (C) 1991-2010 OpenCFD Ltd.
00006      \\/     M anipulation  |
00007 -------------------------------------------------------------------------------
00008 License
00009     This file is part of OpenFOAM.
00010 
00011     OpenFOAM is free software: you can redistribute it and/or modify it
00012     under the terms of the GNU General Public License as published by
00013     the Free Software Foundation, either version 3 of the License, or
00014     (at your option) any later version.
00015 
00016     OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
00017     ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
00018     FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
00019     for more details.
00020 
00021     You should have received a copy of the GNU General Public License
00022     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
00023 
00024 Class
00025     Foam::sigSegvImpl
00026 
00027 Description
00028     Signal handler for SEGV interupt.
00029 
00030     The standard interupt handler is overridden to ensure that the
00031     runningJob file is removed.
00032 
00033     This is the platform specific opaque implementation for class sigSegv.
00034 
00035 See Also
00036     Foam::JobInfo
00037 
00038 SourceFiles
00039     sigSegvImpl.C
00040 
00041 \*---------------------------------------------------------------------------*/
00042 
00043 #ifndef sigQuitSegv_H
00044 #define sigQuitSegv_H
00045 
00046 #include <OpenFOAM/OSspecific.H>
00047 #include <signal.h>
00048 
00049 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
00050 
00051 namespace Foam
00052 {
00053 
00054 /*---------------------------------------------------------------------------*\
00055                            Class sigSegvImpl Declaration
00056 \*---------------------------------------------------------------------------*/
00057 
00058 class sigSegvImpl
00059 {
00060     // Private data
00061 
00062         //- Saved old signal trapping setting
00063         static struct sigaction oldAction_;
00064 
00065 
00066     // Private Member Functions
00067 
00068         static void sigSegvHandler(int);
00069 
00070 
00071 public:
00072 
00073     // Constructors
00074 
00075         sigSegvImpl();
00076 
00077 
00078     // Destructor
00079 
00080         ~sigSegvImpl();
00081 
00082 
00083     // Member functions
00084 
00085         void set(const bool verbose);
00086 };
00087 
00088 
00089 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
00090 
00091 } // End namespace Foam
00092 
00093 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
00094 
00095 #endif
00096 
00097 // ************************ vim: set sw=4 sts=4 et: ************************ //
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines