void sigchld_handler(int sig) { while (waitpid(-1, 0, WNOHANG) > 0) ; return; } int main() { signal(SIGCHLD, sigchld_handler); while (1) { connfd = accept(listenfd, (SA*) &clientaddr, &clientlen); if (fork() == 0) { close(listenfd); ...; close(connfd); exit(0); } close(connfd); } return 0; }