lsof : list open files
代码很容易获得,在debian下$ apt-get -d source lsof 即可下载到代码。
script目录底下好多perl和awk脚本,开发者和使用者提供的有用脚本,读完README即出
tests也是扫了一下README就闪人
还是从main.c的main函数开始把,一开始上来处理本进程的descriptor,简练的代码
for (i = 3, n = GET_MAX_FD(); i < n; i++)
(void) close(i);
while (((i = open("/dev/null", O_RDWR, 0)) >= 0) && (i < 2))
;
if (i < 0)
Exit(1);
if (i > 2)
(void) close(i);
|
注:
关闭3-MAX_FD的描述符,GET_MAX_FD在proto.h里定义的宏, 实际上就是调用系统调用getdtablesize,man一下就知道了。
# if !defined(GET_MAX_FD)
#define GET_MAX_FD getdtablesize
# endif /* !defined(GET_MAX_FD) */
接着,如果0,1,2如果没有打开,把他们都定向到/dev/null,最后循环正常结束应该会打开大于或等于2(如果2没有被打开)的描述符,关闭他。
继续reading
阅读(1624) | 评论(0) | 转发(0) |