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; }