Lee
You may be looking at the wrong end here: xinetd uses select to wait
for connection requests (judging from a quick look at the sources) and
this means the limit you are really running into is FD_SETSIZE -- the
maximum number of file descriptors which can be specified in a
select-call.
This obviously didn't quite make sense :-(. But assuming that the hard
limit is more than 1024, even unprivileged processes are supposed to
be able to raise the soft limit up to the hard limit and a small
experiment with the mini-program included below and the ulimit bash
builtin seems to confirm that this is actually possible (first raising
the hard limit as root, than raising the soft limit as unprivileged
user from a shell invoked via su - <username>, then running the
program).
------------------
#include <fcntl.h>
#include <stdio.h>
int main(void)
{
unsigned count;
count = 0;
while (open("/dev/zero", O_RDONLY, 0) > 0)
++count;
perror("open");
printf("%u\n", count);
return 0;
}
------------------
NB: There are also some system-wide limits which are supposed to be
configurable using the /proc-filesytem, in particular
/proc/sys/fs/file-max and /proc/sys/fs/nr_open.
This obviously didn't quite make sense :-(. But assuming that the hard
limit is more than 1024, even unprivileged processes are supposed to
be able to raise the soft limit up to the hard limit with setrlimit