Example #1
0
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();
}
Example #2
0
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);
}
Example #3
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;
}