读 lsof 代码

1697阅读 0评论2009-12-25 朝花夕拾
分类:C/C++

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
上一篇:重温简单排序算法
下一篇:x200 装64位debian