Пример #1
0
int main(int argc, char* argv[])
{
    
#ifdef DEBUG
    printf("DEBUG MODE ON!\n");
    call_realpath(argv[0]);
#endif

#ifdef WSGI
    setenv("PYTHONPATH",".",1);
    Py_Initialize();
#endif

    signal(SIGINT, signal_handler);
    signal(SIGTERM, signal_handler);

    int listenfd,  port;
    struct sockaddr_in s_addr;
    
    /* 检查参数个数是否正确 */
    if (argc != 2) {
        fprintf(stderr, "usage: %s <port>\n",argv[0]);
        exit(1);
    }
    port = atoi(argv[1]);

    /* 初始化listen_fd*/
    listenfd = socket(AF_INET, SOCK_STREAM, 0);
    s_addr.sin_family = AF_INET;
    s_addr.sin_port = htons((unsigned short)port);
    s_addr.sin_addr.s_addr = htonl(INADDR_ANY);
    
    bind(listenfd, (SA *)&s_addr, sizeof(s_addr));
    
    listen(listenfd, 3);

    /* init libev */
    struct ev_loop *loop = ev_default_loop(0);
    struct ev_io w_accept;
    ev_io_init(&w_accept, on_request, listenfd, EV_READ);
    ev_io_start(loop, &w_accept);
    // loop forever
    ev_loop(loop, 0);
#ifdef WSGI
    Py_Finalize();
#endif
    close(listenfd);
    return 0;
}
int myfoo(int argc, char *argv[]){
  char *name;
  char *root_path;
  
  if (argc < 2)
    printf("usage:prog pathname chroot_path\n");
   else if (argc == 2){
    name = argv[1];      /* name could be very long, i.e longer than MAXPATHLEN*/
    root_path = "/";
  }
  else{
    name = argv[1];      /* name could be very long, i.e longer than MAXPATHLEN*/
    root_path = argv[2];
  }

  (void) strncpy (chroot_path, root_path, sizeof (chroot_path));
  call_realpath(name);
  
  return 0;
}