日期:2014-05-16  浏览次数:20630 次

文件描述的回收问题,谢谢
在子线程中打开文件 读后,关闭,但在/proc/PID/fd中打开的文件描述符还存在,为什么?循环打开关闭时,为什么fd在不断的增长? 帮小弟解决,谢谢

------解决方案--------------------
/proc/PID/fd记录的是进程中打开的文件描述符链接。在主线程终止的情况下,这个文件才会变为空。至于循环打开关闭时,fd为何会增大,按道理讲linux每次打开文件都会返回最小的可用的文件描述符,莫非是因为/proc/PID/fd没有被清空的缘故?
------解决方案--------------------
在主线程中使用循环启动多个线程,每次创建新线程后,是调用线程的代码先执行还是被调用线程的代码先执行,是不确定的。
根据LZ的描述,执行过程大概应该是:在循环中主线程每次创建新线程后,继续执行,而被调用线程则等待执行直到循环结束。但这个过程只是一种可能,如果LZ的程序运行多次或增加循环的次数,肯定会出现多种结果。
------解决方案--------------------
线程的退出和描述符的回收不是同步的。他们是分开进行的。
------解决方案--------------------
顶2楼
------解决方案--------------------
可能是回收不同步