views:

48

answers:

1

Hi,

I have a program which suffer from file descriptor increasing. I see when I execute the command ls -l /proc/5969/fd where 5969 is the pid of the java program the number of file descriptor continuously increasing. but I am unable to open one of those files decriptors to see what file remains open : here is an example of the listing :

lrwx------ 1 root root 64 oct 24 16:08 52295 -> socket:[2577706264]
lrwx------ 1 root root 64 oct 24 16:08 52296 -> socket:[2579543392]
lrwx------ 1 root root 64 oct 24 16:08 52297 -> socket:[2578760962]

Please help me finding a way to solve this file descriptor leak in knowing what files remains open and increase the file descriptor number.

Regards, Zack

+2  A: 

Well, from a quick observation, you are using file descriptors on sockets, not files

In UNIX, both files and sockets use file descriptors, and so you have a problem where you are not closing sockets that you open.

As a result, you are not leaving a file open but are actually leaving port numbers locked from use by other programs.

Stargazer712
It is not *just* the port numbers that he is tying down. In UNIX / Linux, a process is only allowed to have a certain number of fd's (file descriptors) open, be they file fd's, socket fd's, pipe fd's or whatever.
Stephen C
I am not sure I am using socket and that I have port numbers locked.
zacky
do you know a way to see what are the open files remaining open to see where I let things open?
zacky
@zacky, you need to read my post. **There are no files open**. Whether you are using a 3rd party library or whether you are doing any network programming, the fact remains that based on what you posted, **there are no files open**.
Stargazer712
ok but if you are telling me that the open files are sockets and not files so how can I see what socket url it is? I need to understand where my program is leaking
zacky
@zacky, research unix sockets. Please. They operate on ports, not URLs. You have everything you need to find the answer.
Stargazer712