serv00.c 777 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. /* include serv00 */
  2. #include "unp.h"
  3. int
  4. main(int argc, char **argv)
  5. {
  6. int listenfd, connfd;
  7. void sig_int(int), web_child(int);
  8. socklen_t clilen, addrlen;
  9. struct sockaddr *cliaddr;
  10. if (argc == 2)
  11. listenfd = Tcp_listen(NULL, argv[1], &addrlen);
  12. else if (argc == 3)
  13. listenfd = Tcp_listen(argv[1], argv[2], &addrlen);
  14. else
  15. err_quit("usage: serv00 [ <host> ] <port#>");
  16. cliaddr = Malloc(addrlen);
  17. Signal(SIGINT, sig_int);
  18. for ( ; ; ) {
  19. clilen = addrlen;
  20. connfd = Accept(listenfd, cliaddr, &clilen);
  21. web_child(connfd); /* process the request */
  22. Close(connfd); /* parent closes connected socket */
  23. }
  24. }
  25. /* end serv00 */
  26. /* include sigint */
  27. void
  28. sig_int(int signo)
  29. {
  30. void pr_cpu_time(void);
  31. pr_cpu_time();
  32. exit(0);
  33. }
  34. /* end sigint */