for ( ; ; ) {
connfd = accept(listenfd, (SA *) &cliaddr, &clilen));
if ( (childpid = Fork()) == 0) { /* 子进程 */
close(listenfd); /* 子进程关闭监听套接口 */
doit(connfd); /* 子进程通过已连接套接口处理请求 */
close(connfd); /* 子进程处理请求完毕,关闭已连接套接口
/* 这一步可省略,因为exit会关闭所有由内核打开的描述字 */
exit(0); /* 子进程结束 */
}
close(connfd); /* 父进程关闭已连接套接口 */
}
linux环境中,进程共享socket
子进程不接受新的连接,只处理与客户端的业务。
多进程服务器开一个进程为一个客户端为一个服务器服务,开销比较大。