4 ms·
Yeah but fds are guaranteed to be opened lowest available on first, so thats ok, you cant get fd=1026 without having 1026 open. The Linux syscall does not have
by justincormack 5y ago
Yeah but fds are guaranteed to be opened lowest available on first, so thats ok, you cant get fd=1026 without having 1026 open.
The Linux syscall does not have a fixed FD_SETSIZE so glibc could increase the size.
- geocar 5y ago> Yeah but fds are guaranteed to be opened lowest available on first, so thats ok, you cant get fd=1026 without having 1026 open. This is exactly correct. > The Linux syscall does not have a fixed FD_SETSIZE so glibc could increase the size. The application writer can define FD_SETSIZE before including <sys/socket.h> and set it to whatever they want on BSD (including OSX). glibc could* adopt this trick, but my feeling is you probably don't want to stack-allocate this stuff anyway. Dealing with a large number of very-active connections concurrently efficiently requires more effort than just this though.
- dasyatidprime 5y agoTo be more precise on one bit, you can't get fd=1026 without having had at least 1027 open at some point in the past. You can subsequently close a bunch of them in the middle. A compatibility hack for some applications reliant on badly-done select() might be to set RLIMIT_NOFILE to FD_SETSIZE.
- geocar 5y ago> To be more precise on one bit, you can't get fd=1026 without having had at least 1027 open at some point in the past. Of course you can. dup2(0,1026)
- dasyatidprime 5y agoHah! Yes, okay. I should have said “… by opening”.
- deleted 5y ago[deleted]