void start() { signal(SIGSEGV, sig_handle); signal(SIGINT, sig_handle); if(get_net_id(net_key)<0) return; nb_pfile_write(pid_path, getpid()); net_pid = getpid(); nb_net_api_serv_init(); ioloop(); }
int main(int argc, char **argv) { int c; while((c = getopt(argc, argv, "+hN:i:u:t:")) >= 0) { switch(c) { case 'h': usage(stdout); exit(0); case 'N': nolisten = atoi(optarg); break; case 'i': sockid = optarg; break; case 'u': unspec = optarg; break; case 't': inspec = optarg; break; default: usage(stderr); exit(1); } } progspec = argv + optind; if(((sockid != NULL) + (unspec != NULL) + (inspec != NULL)) > 1) { flog(LOG_ERR, "callfcgi: at most one of -i, -u or -t may be given"); exit(1); } signal(SIGCHLD, SIG_IGN); signal(SIGPIPE, sigign); signal(SIGINT, sigexit); signal(SIGTERM, sigexit); mustart(listenloop, 0); ioloop(); killcuraddr(); return(0); }
int main (int argc, char * argv []) { mu_stream_t in, out, sock; pid_t pid; int status, c; while ((c = getopt (argc, argv, "v")) != EOF) switch (c) { case 'v': verbose++; break; case 'h': printf ("usage: musocio file\n"); return 0; default: return 1; } argc -= optind; argv += optind; if (argc != 2) { mu_error ("usage: musocio file"); return 1; } MU_ASSERT (mu_stdio_stream_create (&in, MU_STDIN_FD, 0)); mu_stream_set_buffer (in, mu_buffer_line, 0); MU_ASSERT (mu_stdio_stream_create (&out, MU_STDOUT_FD, 0)); mu_stream_set_buffer (out, mu_buffer_line, 0); MU_ASSERT (mu_socket_stream_create (&sock, argv[1], MU_STREAM_RDWR)); mu_stream_set_buffer (sock, mu_buffer_line, 0); pid = fork (); if (pid == -1) { mu_error ("fork failed: %s", mu_strerror (errno)); return 1; } if (pid == 0) { mu_stream_close (in); mu_stream_destroy (&in); ioloop ("reader", sock, out); exit (0); } ioloop ("writer", in, sock); mu_stream_close (in); mu_stream_destroy (&in); mu_stream_shutdown (sock, MU_STREAM_WRITE); waitpid (pid, &status, 0); mu_stream_close (sock); mu_stream_destroy (&sock); mu_stream_close (out); mu_stream_destroy (&out); return 0; }