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
|
// Global vars
|
||||||
extern char ProcessName[];
|
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;
|
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
|
// Allow process to terminate normally
|
||||||
Terminate = true;
|
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;
|
return;
|
||||||
}//---------------------------------------------------------------------------
|
}//---------------------------------------------------------------------------
|
||||||
@@ -109,18 +125,14 @@ void SignalAbort( int sig )
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Show signal received
|
// Show signal received
|
||||||
std::cerr << "\n" << ProcessName << ": *************************************\n";
|
std::cerr << "\n" << ProcessName << ": ********************************\n";
|
||||||
|
|
||||||
// Create Log Entry - but don't post
|
// 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 );
|
LogMessage( ProcessName, LogMsg );//, ltDefault, -1 );
|
||||||
|
|
||||||
std::cerr << ProcessName << ": ** Terminating immediately! **\n";
|
std::cerr << ProcessName << ": ** Terminating immediately! **\n";
|
||||||
std::cerr << ProcessName << ": *************************************\n\n";
|
std::cerr << ProcessName << ": ********************************\n\n";
|
||||||
|
|
||||||
// Try to stop communications
|
|
||||||
// if (SocketManager)
|
|
||||||
// delete SocketManager;
|
|
||||||
|
|
||||||
// Terminate with signal
|
// Terminate with signal
|
||||||
exit( sig );
|
exit( sig );
|
||||||
|
|||||||
Reference in New Issue
Block a user