Linux中打开的资源,如文件、socket、FIFO等,没有使用也没有关闭,这就是句柄泄露。
如同内存泄露,这反映了程序的缺陷,随着时间流逝,可能会有更多被打开而没有使用的句柄,白白占用系统。
可用 lsof -n |grep pid 查看一个进程打开的所有资源句柄,
问题是,如果进程有多个线程,这个命令,会为每个线程罗列一遍所有句柄,
仿佛每个线程都独立打开了一次,其实不是的,可从FD这一列的值,确定到底打开了几个句柄,
例如下面,真正打开的句柄数,是 lsof -n|grep 11278|wc -l 这个命令计算的句柄数的一半,因为主线程和子线程的句柄的FD是相同的。