Chinaunix首页 | 论坛 | 博客
  • 博客访问: 519488
  • 博文数量: 118
  • 博客积分: 3995
  • 博客等级: 中校
  • 技术积分: 1276
  • 用 户 组: 普通用户
  • 注册时间: 2005-11-15 12:15
文章分类

全部博文(118)

文章存档

2014年(1)

2013年(1)

2010年(6)

2009年(27)

2008年(10)

2007年(33)

2006年(38)

2005年(2)

我的朋友

分类: C/C++

2009-12-25 15:46:35

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
阅读(1568) | 评论(0) | 转发(0) |
0

上一篇:重温简单排序算法

下一篇:x200 装64位debian

给主人留下些什么吧!~~