????Linux C ???????
???????????????????????????? Web Server ???????????????????????? Web Server ?????????????λ??????????????????????????????Щ??????????????????????????????????? ( CSAPP ) ????????????????????????? Web Server ????? Web Server ???????????????????????????????? ( CGI )???????? Web Server ?????????????????????????????????????????????? Web Server ??????ζ???????????????????????????????????????????????? Web Server ????????????????λ??????????д?????????????????????磬?????????????????????
?????????? Web Server ???
??????????????? Web Server ??????????????????????????????????? accept ???????????? fork ??????????????????????????????????????????μ????????????????????????????????????????????????? fork ???????????????????????????????????
??????????????????? fork ??????????????Ρ?????Ρ?????????δ???????????????????????????????????????????????????????????????? UNIX ( Linux ) ????? fork ????????????????????????????????????????????????α???????????????????????????????????Ρ?????????????????????????????????Ρ?????????????????Ρ???κ?????е???????????д?????( copy-on-write ) ????????????????????? fork ??????????? exec ????????3????滻????????Σ??????3??????????Ρ???κ???Ρ???????????Σ???????????????????????????? UNIX ( Linux ) ?′?????????????????????????
???????????????????????д????????????????? CPU ??????????????????????????????????????л?????????
????????????????????????????????????????????????????????????????????????л??????????????????????
????????? Web Server ???
???????????? Web Server ????? accept ???????????????????????????????????????????????????? fork ??????????????????????????????????????????????????????????????????????????????????????????????·?????
??????????????????? Job ????? Job ??????????е??????????????????????????????? Job ???? Job ???е?λ????????
???????????????? Job ???У???????? Job ???????????? Job ??С?????? Job ?????????????????????????????????????
???????????????????????????????????????????Щ?????????????????? Job ????????
???????????
????tinyhttpd ??????????Ч?????????????????????????? Web Server ???????в???????????????????????????????·??????????????????????????????? tinyhttpd ?С??????????????ο? threadpool.h ?? threadpool.c ??
???????????
???????????????????????????????????????????????????£?????????????????????ζ??????????????????????? read ???????????????????????????????????????????????? read ??????????????δ??????????????????? file descriptor ?? blocking ???????????????????????????????????????е??????????????????????????μ???????????????????????
?????????????? file descriptor ????? non-blocking ?????????????( Event-driven )???????????