COVISE Core
Classes | Public Types | Static Public Member Functions | Static Public Attributes | Protected Member Functions | Private Member Functions | Static Private Member Functions | Static Private Attributes | List of all members
covise::coSignal Class Reference

#include <coSignal.h>

Collaboration diagram for covise::coSignal:
Collaboration graph
[legend]

Classes

struct  handlerRec
 

Public Types

enum  { SIG_NAME_LENGTH = 15 }
 Number of known signals and max. length of names. More...
 
enum  ReplaceOption { REPLACE_DFL , KEEP_DFL }
 

Static Public Member Functions

static coSignalgetHandler ()
 get a signal handler: if none exists, create it More...
 
static void kill ()
 stop all user-defined signal handling, kill internal states More...
 
static void addSignal (int signo, coSignalHandler &myHandler, enum ReplaceOption sysOpt=REPLACE_DFL, bool atEnd=true)
 
static void removeSignal (int signo, coSignalHandler &myHandler)
 remove a signal's handler More...
 
static void blockSignal (int signo)
 block signal for a while More...
 
static void unblockSignal (int signo)
 unblock signal More...
 
static void blockAllSignals ()
 block all signal handling of our signals More...
 
static void unblockAllSignals ()
 unblock all signal handling of our signals More...
 
static bool isPending (int signo)
 
static void printBlocks ()
 

Static Public Attributes

static const char * sigName [NSIG]
 Signal names. More...
 

Protected Member Functions

 coSignal ()
 singleton: use coSignalHandler::getHandler() to get an instance More...
 
 ~coSignal (void)
 singleton: use coSignalHandler::kill() to kill all signal handling More...
 

Private Member Functions

void my_signal (int sigNo, void(*func)(int))
 

Static Private Member Functions

static void doHandle (int sig)
 

Static Private Attributes

static coSignals_instance = NULL
 Singleton with late construction: construct with first getHandler() call. More...
 
static handlerRecs_handler [NSIG]
 static variables More...
 
static sigset_t s_sysMask
 
static bool s_callSys [NSIG]
 

Detailed Description

Singleton-Class to manage signals

Member Enumeration Documentation

◆ anonymous enum

anonymous enum

Number of known signals and max. length of names.

Enumerator
SIG_NAME_LENGTH 

◆ ReplaceOption

Enumerator
REPLACE_DFL 
KEEP_DFL 

Constructor & Destructor Documentation

◆ coSignal()

coSignal::coSignal ( )
protected

singleton: use coSignalHandler::getHandler() to get an instance

◆ ~coSignal()

coSignal::~coSignal ( void  )
protected

singleton: use coSignalHandler::kill() to kill all signal handling

Member Function Documentation

◆ addSignal()

void coSignal::addSignal ( int  signo,
coSignalHandler myHandler,
enum ReplaceOption  sysOpt = REPLACE_DFL,
bool  atEnd = true 
)
static

add a signal handler after the current ones atEnd : which end of the handler sequence to add to replaceSysHandler : keep (false) or replace system handler

there ate handlers for this signal

chain behind

chain before

this is the first handler

◆ blockAllSignals()

void coSignal::blockAllSignals ( )
static

block all signal handling of our signals

block signal

◆ blockSignal()

void coSignal::blockSignal ( int  signo)
static

block signal for a while

◆ doHandle()

void coSignal::doHandle ( int  sig)
staticprivate

◆ getHandler()

static coSignal * covise::coSignal::getHandler ( )
inlinestatic

get a signal handler: if none exists, create it

◆ isPending()

bool coSignal::isPending ( int  signo)
static

◆ kill()

static void covise::coSignal::kill ( )
inlinestatic

stop all user-defined signal handling, kill internal states

◆ my_signal()

void covise::coSignal::my_signal ( int  sigNo,
void(*)(int)  func 
)
private

◆ printBlocks()

void coSignal::printBlocks ( )
static

◆ removeSignal()

void coSignal::removeSignal ( int  signo,
coSignalHandler myHandler 
)
static

remove a signal's handler

◆ unblockAllSignals()

void coSignal::unblockAllSignals ( )
static

unblock all signal handling of our signals

unblock signal

◆ unblockSignal()

void coSignal::unblockSignal ( int  signo)
static

unblock signal

Member Data Documentation

◆ s_callSys

bool coSignal::s_callSys
staticprivate

◆ s_handler

coSignal::handlerRec * coSignal::s_handler
staticprivate

static variables

◆ s_instance

coSignal * coSignal::s_instance = NULL
staticprivate

Singleton with late construction: construct with first getHandler() call.

◆ s_sysMask

sigset_t coSignal::s_sysMask
staticprivate

◆ sigName

const char * coSignal::sigName
static
Initial value:
= {
"SIG0",
"SIGHUP", "SIGINT", "SIGQUIT", "SIGILL", "SIGTRAP",
"SIGIOT SIGABRT", "SIGEMT", "SIGFPE", "SIGKILL",
"SIGBUS", "SIGSEGV", "SIGSYS", "SIGPIPE", "SIGALRM",
"SIGTERM", "SIGUSR1", "SIGUSR2", "SIGCLD SIGCHLD",
"SIGPWR", "SIGWINCH", "SIGURG", "SIGPOLL SIGIO",
"SIGSTOP", "SIGTSTP", "SIGCONT", "SIGTTIN", "SIGTTOU",
"SIGVTALRM", "SIGPROF", "SIGXCPU", "SIGXFSZ", "SIG32",
"SIG33", "SIG34", "SIG35", "SIG36", "SIG37", "SIG38",
"SIG39", "SIG40", "SIG41", "SIG42", "SIG43", "SIG44",
"SIG45", "SIG46", "SIG47", "SIG48", "SIGRTMIN"
"SIG50",
"SIG51", "SIG52", "SIG53", "SIG54", "SIG55",
"SIG56", "SIG57", "SIG58", "SIG59", "SIG60", "SIG61",
"SIG62", "SIG63", "SIGRTMAX"
}

Signal names.


The documentation for this class was generated from the following files: