一、frok与exec
二、并发服务器
- 演示案例
pid_t pid;
int listenFd,connFd;
listenFd=socket(...);
bind(listenFd,...);
listen(listenFd,...);
for(;;){
connFd=accept(listenFd,....);
if((pid=fork)==0)
{
close(listenFd);
doit(connFd);
close(connFd);
exit(0);
}
close(connFd);
}
- 因为父进程的文件描述符会传递给子进程,所以父进程将任务交给子进程之后,父进程就关闭原先的connFd
- 另外,子进程不需要accept,所以关闭listenFd。子进程的close(connFd)可以不用写,因为exit(0)退出时会自动关闭所有的文件描述符,不过最好显示关闭(便于理解)