なぜ「man select」が nfds > FD_SETSIZE に対して EINVAL を提供するのか疑問に思っています。
ただし、サンプルコードを使用してテストします。FD_SETSIZE=1024 ですが、select(4096, ...) は EINVAL を返しません。
select() 実装のソースコードがどこにあるか知っている人はいますか?
このコマンドを使用して同様の機能を見つけましたが、「select」とまったく同じではありません
$ find . -name '*.c' -exec grep -n 'select[(]int' {} /dev/null \;
./fs/select.c:396:int do_select(int n, fd_set_bits *fds, struct timespec *end_time)
./fs/select.c:518:int core_sys_select(int n, fd_set __user *inp, fd_set __user *outp,
./fs/select.c:617:static long do_pselect(int n, fd_set __user *inp, fd_set __user *outp,
そして、glibc ソースの syscalls.list ファイルで「select」を grep します
grep select ./sysdeps/unix/syscalls.list
select - select Ci:iPPPP __select __libc_select select
glibc/linux カーネル コードでシステム コール select() のソースを見つける方法をまだ理解していません。