I am debugging an application on Linux. And it has a couple of threads that are periodically calling the select system call:
strace shows:
select(0, NULL, NULL, NULL, {1, 342414})
So nfds=0. I thought that nfds is the highest file descriptor number occurring in any of the sets readfds, writefds and exceptfds incremented by one. It cannot be standard input (fd=0), because this would then have nfds=1.
So what is the meaning of nfds=0 in this case?
Thanks!
Usually select sleeps until either the timeout expires, or an event occurs on one of the file descriptors. If there are no file descriptors, the timeout is the only remaining behaviour.
My local manpage for select(2) even includes the text
Some code calls select() with all three sets empty, nfds zero, and a non-NULL timeout as a fairly portable way to sleep with subsecond precision.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With