void server_connect(t_server *server,int port) { t_context *C=ctx_get(); t_process *process=process_add(C,"server",__server); process->clock->limit=1; process_launch(process); }
int main (int argc, char *argv[]) { ret_t ret; cherokee_boolean_t single_time; const char *config_file_path; /* Find the worker exec */ figure_worker_path (argv[0]); /* Sanity check */ ret = check_worker_version (argv[0]); if (ret != ret_ok) exit (EXIT_ERROR); set_signals(); single_time = is_single_execution (argc, argv); /* Figure out some stuff */ config_file_path = figure_config_file (argc, argv); use_valgrind = figure_use_valgrind (argc, argv); pid_file_path = figure_pid_file_path (config_file_path); worker_uid = figure_worker_uid (config_file_path); worker_retcode = -1; /* Turn into a daemon */ if (! single_time) { may_daemonize (argc, argv); pid_file_save (pid_file_path, getpid()); } /* Launch the spawning thread */ #ifdef HAVE_SYSV_SEMAPHORES if (! single_time) { ret = spawn_init(); if (ret != ret_ok) { PRINT_MSG_S ("(warning) Couldn't initialize spawn mechanism.\n"); } } #endif while (true) { graceful_restart = false; pid = process_launch (cherokee_worker, argv); if (pid < 0) { PRINT_MSG ("(critical) Couldn't launch '%s'\n", cherokee_worker); exit (EXIT_ERROR); } ret = process_wait (pid); if (single_time) break; usleep ((ret == ret_ok) ? DELAY_RESTARTING : DELAY_ERROR); } if (! single_time) { clean_up(); } return (worker_retcode == 0) ? EXIT_OK : EXIT_ERROR; }