Important Update:
- Implement Terminate counter Exit immediately on multiple terminate signals - Move global var Terminate to SignalCore
This commit is contained in:
@@ -21,7 +21,11 @@
|
||||
|
||||
// Global vars
|
||||
extern char ProcessName[];
|
||||
extern bool Terminate;
|
||||
|
||||
// Termination Vars
|
||||
bool Terminate = false;
|
||||
int TermCount = 0;
|
||||
int MaxTermCount = 5;
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
@@ -75,18 +79,30 @@ void SignalTerminate( int sig )
|
||||
default : strcpy( SigName, "UNKNOWN" ); break;
|
||||
}
|
||||
|
||||
// Show signal received if not already terminated
|
||||
std::cerr << "\r\n" << ProcessName << ": *****************************************\n";
|
||||
|
||||
// Create Log Entry
|
||||
sprintf( LogMsg, " ** Terminate signal received (%s) **", SigName );
|
||||
LogMessage( ProcessName, LogMsg );//, ltDefault, -1 );
|
||||
|
||||
std::cerr << ProcessName << ": ** Terminating normally... **\n";
|
||||
std::cerr << ProcessName << ": *****************************************\n\n";
|
||||
|
||||
// Allow process to terminate normally
|
||||
Terminate = true;
|
||||
TermCount++;
|
||||
|
||||
// Check for Terminate Limit
|
||||
// Show signal received if not already terminated
|
||||
std::cerr << "\r\n" << ProcessName << ": ***********************************\n";
|
||||
|
||||
// Create Log Entry
|
||||
sprintf( LogMsg, " ** %s signal received [%d] **", SigName, TermCount );
|
||||
LogMessage( ProcessName, LogMsg );//, ltDefault, -1 );
|
||||
|
||||
if (TermCount < MaxTermCount)
|
||||
{
|
||||
std::cerr << ProcessName << ": ** Terminating normally... **\n";
|
||||
std::cerr << ProcessName << ": ***********************************\n\n";
|
||||
}
|
||||
else
|
||||
{
|
||||
std::cerr << ProcessName << ": ** Terminating immediately! **\n";
|
||||
std::cerr << ProcessName << ": ***********************************\n\n";
|
||||
|
||||
exit( sig );
|
||||
}
|
||||
|
||||
return;
|
||||
}//---------------------------------------------------------------------------
|
||||
@@ -109,18 +125,14 @@ void SignalAbort( int sig )
|
||||
}
|
||||
|
||||
// Show signal received
|
||||
std::cerr << "\n" << ProcessName << ": *************************************\n";
|
||||
std::cerr << "\n" << ProcessName << ": ********************************\n";
|
||||
|
||||
// Create Log Entry - but don't post
|
||||
sprintf( LogMsg, " ** Abort signal received (%s) **", SigName );
|
||||
sprintf( LogMsg, " ** %s signal received **", SigName );
|
||||
LogMessage( ProcessName, LogMsg );//, ltDefault, -1 );
|
||||
|
||||
std::cerr << ProcessName << ": ** Terminating immediately! **\n";
|
||||
std::cerr << ProcessName << ": *************************************\n\n";
|
||||
|
||||
// Try to stop communications
|
||||
// if (SocketManager)
|
||||
// delete SocketManager;
|
||||
std::cerr << ProcessName << ": ** Terminating immediately! **\n";
|
||||
std::cerr << ProcessName << ": ********************************\n\n";
|
||||
|
||||
// Terminate with signal
|
||||
exit( sig );
|
||||
|
||||
Reference in New Issue
Block a user