コード例 #1
0
ファイル: app.cpp プロジェクト: jj4jj/dcpots
int App::init(int argc, const char * argv[]){
    int ret = on_create(argc, argv);
    if (ret){
        GLOG_ERR("app check start error:%d !", ret);
        return -1;
    }
    ret = init_arguments(argc, argv, impl_, *this);
    if (ret){
        GLOG_ERR("init argumets error :%d !", ret);
        return -1;
    }
    _app_reload_env(impl_);
    //////////////////////////////////////////////////////////////
    const char * pidfile = cmdopt().getoptstr("pid-file");
    //1.control command
    ret = init_command(*this, pidfile);
    if (ret){
        if (ret < 0){
            GLOG_ERR("control command init error:%d !", ret);
            return -1;
        }
        else {
            exit(0);
        }
    }
    //"start:n:S:start process normal mode;"
    if (!cmdopt().hasopt("start")){
        exit(-1);
    }
    //2.daemonlization and pid running checking
    if (cmdopt().hasopt("daemon")){
        daemonlize(1, 0, pidfile);
    }
    if (pidfile && getpid() != dcs::lockpidfile(pidfile)){
        fprintf(stderr, "process should be unique running ...");
        return -2;
    }
    init_signal();
    //////////////////////////////////////////////////////////////
    ret = init_facilities(*this, impl_);
    if (ret){
        GLOG_ERR("init facilities error:%d !", ret);
        return -1;
    }
    GLOG_IFO("app framework init success !");
    //////////////////////////////////////////////////////////////////////////////////
    return on_init();
}
コード例 #2
0
ファイル: rdb.cpp プロジェクト: buf1024/remotedb
int main(int argc, char **argv)
{
    std::string conf;
    int optch;
    extern char *optarg;
    char optstring[] = "hvc:";
    while ((optch = getopt(argc, argv, optstring)) != -1) {
        switch (optch) {
        case 'h':
            usage();
            exit(0);
        case 'v':
            printf("%s version: %s\n", "RDB", "1.0");
            exit(0);
        case 'c':
            conf = optarg;
            break;
        default:
            break;
        }
    }

    printf("sizeof(RDBShm) = %d\n", sizeof(RDBShm));

    if(conf.empty()){
        printf("Configuration file is empty, using the default configuration\n");
        loadDefConf(gRDBConf);
    }else{
        if(loadConf(conf, gRDBConf) != 0){
            printf("Fail to load configuration file is empty.\n");
            exit(-1);
        }
    }

    if(gRDBConf.daemon) daemonlize();

    //reg signal

    //create share memory

    //start route process

    //wait for all process done

    //start service

    return 0;
}
コード例 #3
0
ファイル: mybg.cpp プロジェクト: buf1024/mydoc
int main(int argc, char* argv[])
{
    extern char *optarg;
    int optch;
    char optstring[] = "p:h";

    g_prog_name = argv[0];

    //读取命令行参数
    while ((optch = getopt(argc, argv, optstring)) != -1) {
        switch (optch) {
        case 'h':
            usage();
            exit(0);
        case 'p':
            g_run_name = optarg;
            break;
        default:
            usage();
            exit(0);
        }
    }

    if (g_run_name.empty()) {
        printf("program file is empty.\n");
        usage();
        exit(0);
    }

    daemonlize();

    srand(time(0));

    service();

    return 0;
}