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;
}