int main(int argc, char **argv) { verbose = getenv("LIBCBIO_TESTS_VERBOSE") ? 1 : 0; core = getenv("LIBCBIO_TESTS_COREDUMP") ? 1 : 0; ++verbose; if (argc == 1) { run_single(get_testcase(argv[0])); } else { run_all(); } /* Not reached */ return 0; }
int transition_machine() { int i; while(transition!=DEATH) { switch(transition) { case MULTI: run_multi(); break; case SINGLE: run_single(); break; } } syslog(LOG_EMERG,"Killing all existing sessions..."); /* Kill all sessions */ kill(-1,SIGKILL); /* Be nice and wait for them */ while(waitpid(-1,(int *)0,WNOHANG|WUNTRACED)>0) continue; unmount("/",0); reboot(RB_AUTOBOOT); /* NOTREACHED */ }
int main(int argc,char* argv[]) { int iRet = 0; if (argc < 2) { fprintf( stderr,"usage: %s config_file", argv[0]); return -1; } //读取配置文件 char szIiniFile[256] = {0}; strncpy (szIiniFile ,argv[1], sizeof (szIiniFile)); if(access (szIiniFile, F_OK) != 0) { fprintf( stderr,"get config file:[%s] error", szIiniFile); return -1; } //读取配置参数 if(ReadConfig(szIiniFile) != 0) { fprintf( stderr,"initalize config file:[%s] error\n", szIiniFile); exit(1); } //日志初始化 g_pLog = new Log (g_sysParam.log_dir, g_sysParam.log_priority, g_sysParam.log_size, g_sysParam.log_num, g_sysParam.log_prename); //单实例进程 iRet = run_single(argv[0]); if(iRet) { LOG(LOG_ERROR, "run_single error\n"); exit(1); } //环境设置 init_fdlimit (); //信号处理 struct sigaction sa; sigset_t sset; memset(&sa, 0, sizeof(sa)); sa.sa_handler = sigterm_handler; sigaction(SIGINT, &sa, NULL); sigaction(SIGTERM, &sa, NULL); sigaction(SIGQUIT, &sa, NULL); signal(SIGPIPE, SIG_IGN); signal(SIGCHLD, SIG_IGN); sigemptyset(&sset); sigaddset(&sset, SIGSEGV); sigaddset(&sset, SIGBUS); sigaddset(&sset, SIGABRT); sigaddset(&sset, SIGILL); sigaddset(&sset, SIGCHLD); sigaddset(&sset, SIGFPE); sigprocmask(SIG_UNBLOCK, &sset, &sset); //守护进程 // daemon(1, 1); // MyReactor 对象池 iRet = LITEREACTORPOOL_INSTANCE->Init( g_sysParam.thread_num, newMyReactor); if(iRet) { LOG(LOG_ERROR,"LITEREACTORPOOL_INSTANCE Init error!"); exit(1); } LOG(LOG_INFO, "server init ok, MainLoop start!"); //监听及 accept, 如果有返回则程序退出 iRet = MainLoop(); if(iRet) { LOG(LOG_WARN, "MainLoop exit!!!!!!!!!!!!!!"); exit(1); } return 0; }