TL;DR: don't use select() + bump the RLIMIT_NOFILE soft limit to the hard limit in your modern programs. The primary way to reference, allocate and pin runtime OS resources on Linux today are file descriptors ("fds"). Originally they were used to reference open files and directories and maybe a bit more, but today they may be used to reference almost any kind of runtime resource in Linux userspace