"H. Peter Anvin" <hpa@xxxxxxxxx> writes: > On 04/06/2012 02:54 AM, Alexey Dobriyan wrote: >> >> Without proc knowledge about fdtable is gathered linearly and still unreliable. >> With nextfd(2), even procful environments could lose several failure branches. >> And they can keep old dumb fd++ or smart /proc/self/fd loops for a change. >> > > Incidentally, if we were to create a system call for this -- which I so > far see no reason for -- I would make it return a select-style bitmask > of file descriptors in use, not a "next fd" which would require a system > call per iteration. It's already possible to do something a little like that with the existing "poll" system call: #include <stdio.h> #include <sys/poll.h> int main(void) { enum { N_FDS = 1024 }; struct pollfd fds[N_FDS]; int error; int i; for (i = 0; i < N_FDS; i++) { fds[i].fd = i; fds[i].events = 0; } error = poll(fds, N_FDS, 0); if (error < 0) perror("poll"); else { printf("valid fds:"); for (i = 0; i < N_FDS; i++) if (!(fds[i].revents & POLLNVAL)) printf(" %d", fds[i].fd); printf("\n"); } return 0; } blp@blp:~/tmp(0)$ gcc tmp.c -Wall blp@blp:~/tmp(0)$ ./a.out valid fds: 0 1 2 blp@blp:~/tmp(0)$ ./a.out 5>/dev/null valid fds: 0 1 2 5 blp@blp:~/tmp(0)$ ./a.out 5>/dev/null 3</dev/stdin valid fds: 0 1 2 3 5 blp@blp:~/tmp(0)$ -- Ben Pfaff http://benpfaff.org -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html