Re: (Simple) problem with sockets

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sun, Apr 22, 2001 at 11:26:59PM -0400, Lee Chin wrote:
> This is more of a Linux socket API question... I have a server thread that
> accepts (accept sys call) socket connections and then services a client
> request and closes the socket connection using:
> 
> shutdown(fd, SHUT_RDWR);
> close(fd);

	Quaint...  I use just  close(fd)  for that.
	Do you mean the fd STAYS behind if you do that ?
	(As shown by the  /proc/XXX/fd/  pseudo-directory ?)

	If it does, it may be indicative of some bug in the system.
	Which kernel version you are running ?  What architecture ?

> My problem is this... after a while I see that the file descriptor returned
> by the accept system call slowly starts increasing.  It starts increasing in
> the integer file descriptor number returned by the system call (the FD that
> we use to do the read and write system calls).

	It won't increase beyond the limit of:
		getrlimit(RLIMIT_NOFILE, &rlimits)
	(See "man getrlimit")

> I have two problems:
> 1) I'm using the file descriptor as an index into a fixed size array

	Make sure its size is at least your number-of-files limit.

> 2) I'm scared of eventually running out of file descriptors.

	In general you will sooner or latter encounter a situation
	where you will run out of file descriptors -- it all depends
	just on the lifetimes of the connections.  Prepare for it.

	If the average lifetime exceeds the average in between birth-
	events (accept()s), your population (number of fds) will increase.

> Further more, when I do a "file /proc/PID/fd/XXX" I get a "/proc/PID/fd/XXX:
> broken symbolic link to socket:[BLAH]"
> 
> Why is this file descriptor still lingering around and how do I get rid of
> it when I do a close on the socket?

	Is it really lingering ?
	Like I said in the beginning, it may be a kernel bug, in which
	case we need to know which kernel version you are using.

> Thanks
> Lee

/Matti Aarnio
-
: send the line "unsubscribe linux-net" in
the body of a message to majordomo@vger.kernel.org


[Index of Archives]     [Netdev]     [Ethernet Bridging]     [Linux 802.1Q VLAN]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Git]     [Bugtraq]     [Yosemite News and Information]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux PCI]     [Linux Admin]     [Samba]

  Powered by Linux