当前位置: 技术问答>linux和unix
linux获取进程句柄数怎么获取?
来源: 互联网 发布时间:2017-05-19
本文导语: 我现在想到的方法是从/proc/进程ID/fd目录下,数一数有几个文件。见笑了,有更好的方法吗?谢谢 | 你可以写一个module在内核态运行, 全局变量init_task是1号进程,current是当前进程。 所有的进程都是串...
我现在想到的方法是从/proc/进程ID/fd目录下,数一数有几个文件。见笑了,有更好的方法吗?谢谢
|
你可以写一个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 %dn", p->pid);
printk(KERN_ERR "comm is %sn", p->comm);
}
当遍历到你想查看的进程的时候,根据这个线索,获取你想要的 该进程打开文件的信息
由进程结构体task_struct 开始,依次寻找,找到在内存中存储的 进程打开文件的信息
struct task_struct ->
struct files_struct ->
struct file ->
struct dentry ->
struct inode ->
|
数个数的方法很好啊
至于楼上还在内核中做,应用于软件就没必要了。
至于楼上还在内核中做,应用于软件就没必要了。
|
这个是获取系统限制,如果要获得句柄数量该怎么办??