#include #include #include #include fd_set set; void doit(int n, fd_set *set) { fd_set nosave = *set; static struct timeval tv; select(n, 0, &nosave, 0, &tv); } main(int ac, char **av) { char c; int n, N, nfds,fd, fid; char fname[L_tmpnam]; // morefds(); N = 61; fname[0] = 0; nfds = 0; FD_ZERO(&set); /* Create a temporary file for clients to open */ tmpnam(fname); fd = open(fname, O_RDWR|O_APPEND|O_CREAT, 0666); unlink(fname); if (ac == 2) N = atoi(av[1]); printf("dup\n"); for (n = 0; n < N; n++) { fid = dup(fd); if (fid == -1) break; if (fid >= nfds) nfds = fid + 1; FD_SET(fid, &set); } // BENCH(doit(nfds,&set), 0); printf("select\n"); doit(nfds,&set); printf("close\n"); for (fid = 0; fid < nfds; fid++) { if (FD_ISSET(fid, &set)) { close(fid); } } printf("close2\n"); close(fd); exit(0); }