#include "StdAfx.h"
#include <iostream>
#ifdef WIN32
#else
#include <unistd.h>
#include <sys/types.h>
#include <signal.h>
#endif
void svr_signal()
{
signal(SIGINT, [](int signo){
CLogMgr::instance()->writeLog(GB("收到终止程序信号 %1,忽略信号").arg(signo));
std::this_thread::sleep_for(std::chrono::milliseconds(1000));
//raise(SIGINT);
});
}
int main(int argc, char** argv)
{
svr_signal();
App app(argc, argv);
int nCode = 1000;
try
{
if (app.initInstance())
{
nCode=app.run();
}
if (nCode == 1000)
{
///杀死当前进程
#ifdef WIN32
DWORD dwProcessID = ::GetCurrentProcessId(); //获取当前进程ID号
HANDLE hProcess = ::OpenProcess(PROCESS_TERMINATE,FALSE,dwProcessID); //根据进程ID返回对象句柄
::TerminateProcess(hProcess,0); //根据对象句柄结束进程
CloseHandle(hProcess);
#else
pid_t pid = getpid();
int n = kill(pid,0);
#endif
return 0;
}
app.exitInstance();
}
catch(Exception * e)
{
std::cout << "程序发生异常:" << std::endl;
delete e;
app.exitInstance();
nCode=-1;
}
return nCode;
}