linux获取进程句柄数怎么获取?

ywwzq0507 2013-06-09 03:02:16
我现在想到的方法是从/proc/进程ID/fd目录下,数一数有几个文件。见笑了,有更好的方法吗?谢谢
...全文
524 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
eziowayne 2014-06-11
  • 打赏
  • 举报
回复
引用 3 楼 xiaoqiao_82 的回复:
查一下 getrlimit 系统调用。
这个是获取系统限制,如果要获得句柄数量该怎么办??
xiaoqiao_82 2013-07-11
  • 打赏
  • 举报
回复
不知道进程句柄数是什么意思?Linux中不是有进程ID和线程ID吗
fdl19881 2013-07-02
  • 打赏
  • 举报
回复
数个数的方法很好啊 至于楼上还在内核中做,应用于软件就没必要了。
yandong 2013-07-02
  • 打赏
  • 举报
回复
你可以写一个module在内核态运行, 全局变量init_task是1号进程,current是当前进程。 所有的进程都是串在一起的,通过list_head。所以你可以通过init_task或者current开始遍历这个双链表,找到你所需要的进程。 下面这段代码可以遍历所有的进程,参考 http://www.yandong.org/archives/495
Struct task_struct *p;
for_each_process(p)
{
    printk(KERN_ERR "pid is %d\n", p->pid);
    printk(KERN_ERR "comm is %s\n", p->comm);
}
当遍历到你想查看的进程的时候,根据这个线索,获取你想要的 该进程打开文件的信息 由进程结构体task_struct 开始,依次寻找,找到在内存中存储的 进程打开文件的信息

 struct  task_struct -> 
struct files_struct -> 
struct file ->
struct dentry ->
struct inode ->
xiaoqiao_82 2013-06-19
  • 打赏
  • 举报
回复
查一下 getrlimit 系统调用。
ywwzq0507 2013-06-18
  • 打赏
  • 举报
回复
引用 1 楼 Idle_Cloud 的回复:
还有一个命令就是 lsof -p 进程号
这个知道啊!~我想用编程实现,不想用shell命令。
Carl_CCC 2013-06-09
  • 打赏
  • 举报
回复
还有一个命令就是 lsof -p 进程号

4,441

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧