void output_multi_tcp(int have_collect) { int fd, flags, res; fd_set fdr, fdw; struct timeval timeout; struct sockaddr_in db_addr; int out_pipe[2]; int len; static char data[LEN_10M] = {0}; int i; /* get st_array */ if (get_st_array_from_file(have_collect)) { return; } /* only output from output_db_mod */ reload_modules(conf.output_tcp_mod); if (!strcasecmp(conf.output_tcp_merge, "on") || !strcasecmp(conf.output_tcp_merge, "enable")) { conf.print_merge = MERGE_ITEM; } else { conf.print_merge = MERGE_NOT; } if (pipe(out_pipe) != 0) { return; } dup2(out_pipe[1], STDOUT_FILENO); close(out_pipe[1]); running_check(RUN_CHECK_NEW); fflush(stdout); len = read(out_pipe[0], data, LEN_10M); close(out_pipe[0]); /*now ,the data to send is gotten*/ for(i = 0; i < conf.output_tcp_addr_num; i++){ send_data_tcp(conf.output_tcp_addr[i], data, len); } }
/* * send check to remote */ void send_tcp(int fd, int have_collect) { int out_pipe[2]; int len; static char data[LEN_10M] = {0}; /* get st_array */ /* if (get_st_array_from_file(have_collect)) { return; } */ /* only output from output_db_mod */ reload_modules(conf.output_tcp_mod); if (!strcasecmp(conf.output_tcp_merge, "on") || !strcasecmp(conf.output_tcp_merge, "enable")) { conf.print_merge = MERGE_ITEM; } else { conf.print_merge = MERGE_NOT; } if (pipe(out_pipe) != 0) { return; } dup2(out_pipe[1], STDOUT_FILENO); close(out_pipe[1]); running_check(RUN_CHECK_NEW); fflush(stdout); len = read(out_pipe[0], data, LEN_10M); close(out_pipe[0]); if (len > 0 && write(fd, data, len) != len) { do_debug(LOG_ERR, "output_db write error:%s", strerror(errno)); } }
int main(int argc, char **argv) { parse_config_file(DEFAULT_CONF_FILE_PATH); load_modules(); statis.cur_time = time(NULL); conf.print_day = -1; main_init(argc, argv); /* * enter running */ switch (conf.running_mode) { case RUN_LIST: running_list(); break; case RUN_CRON: conf.print_mode = DATA_DETAIL; running_cron(); break; #ifdef OLDTSAR /*for check option*/ case RUN_CHECK: reload_check_modules(); /* disable module when n_col is zero */ running_check(RUN_CHECK); break; /*end*/ #endif case RUN_CHECK_NEW: if (reload_modules(conf.output_print_mod)) { conf.print_mode = DATA_DETAIL; }; /* disable module when n_col is zero */ disable_col_zero(); running_check(RUN_CHECK_NEW); break; case RUN_PRINT: /* reload module by output_stdio_mod and output_print_mod*/ reload_modules(conf.output_stdio_mod); reload_modules(conf.output_print_mod); /* disable module when n_col is zero */ disable_col_zero(); /* set conf.print_nline_interval */ conf.print_nline_interval = conf.print_interval; running_print(); break; case RUN_PRINT_LIVE: /* reload module by output_stdio_mod and output_print_mod*/ reload_modules(conf.output_stdio_mod); reload_modules(conf.output_print_mod); /* disable module when n_col is zero */ disable_col_zero(); running_print_live(); break; default: break; } shut_down(); return 0; }