Пример #1
0
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;
}
Пример #2
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 */
}
Пример #3
0
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;
}