int main()

in agent/src/c/src/fsof_main.c [468:523]


int main(int argc,char **argv) {
    int err = 0;
    struct itimerval timer_setting,old_val;
    int timer_val = 0;

    if (argc < 2){
        fprintf(stderr,"parameters contains the timer value of zookeeper unit:second and the URL config of zookeeper!\n");
        fprintf(stderr,"agent time conf/fsof.ini\n");
        exit(0);
    }
    
    //parameter contains the timer value of zookeeper unit:second
    timer_val = atoi(argv[1]);
    
    //dubbo-php-framework/config/global/conf/fsof.ini
    strncpy(g_zookeeper_conf, argv[2],  sizeof(g_zookeeper_conf) - 1 > strlen(argv[2]) ? strlen(argv[2]) : sizeof(g_zookeeper_conf) - 1);
    if (access(g_zookeeper_conf, F_OK) == -1){
        fprintf(stderr,"can not find conf/fsof.ini\n");
        exit(0);
    }
    
    //set process to daemon ,if failed ,directly exit
    daemonize();
    signal(SIGHUP, SIG_IGN);
    signal(SIGPIPE, SIG_IGN);
    signal(SIGALRM, sigroutine);

    if (timer_val > 0) {
        timer_setting.it_value.tv_sec = timer_val;
        timer_setting.it_value.tv_usec = 0;
        timer_setting.it_interval.tv_sec = timer_val;
        timer_setting.it_interval.tv_usec = 0;
        setitimer(ITIMER_REAL, &timer_setting, &old_val);   
    }
    
    err = fsof_log_init();
    if (err > 0) {
        fprintf(stderr,"agent log init failed,exit!\n");
        exit(-1);
    }

    get_local_ip();
    g_message_queue = fsof_mq_create();
    create_thread(&g_redis_pid,thread_redis_work,NULL);
    fsof_redis_init(REDIS_UNIX_SOCK);
    init_zookeeper_env();

    pthread_join(g_redis_pid,NULL); 
    fsof_mq_destroy(g_message_queue);
    fsof_log_info(INFO,"fsof agent redis thread exit,need cleanup resource!\n");
    
    //cleanup
    cleanup_env();
   
    return 0;
}