System: SPARC 1000 server, multi-processors, Solaris 2.3
I'm developing a client-server system which involves 48 clients and one
server. Each client uses about 8 file descriptors--some tcp/ip, some
udp/ip. Also, each client forks a child to do some special processing
and eventually the child exits after completing the task. The client
repeats the forking as needed.
The problem I'm running into is that the whole system comes up properly;
one client successfully forks a child to do that special processing; which
then completes and exits; and the next time the client forks again and try
to get a socket (using socket(AF_INET, SOCK_STREAM, 0)), it gets an `errno'
of ENOENT (No such file or directory). This doesn't really make sense
since if there aren't enough system resources, I would have expected to get
an `errno' of EMFILE, ENOMEM, or ENOSR instead of ENOENT. The ulimit of
that process is set to a maximum of 512 open file descriptors. Also, if
I only have 8 clients instead of 24, the whole system works properly and
I would be really appreciative if anyone has any insight on this problem.
Please either post a response or mail directly to me.