根据pid获取该进程打开的文件数,几种实现方法?
lsof -p pid |wc -l 得到的进程句柄数目 与使用 ll /proc/pid/fd/ |wc-l 命令的到的句柄数不相同怎么办?
哪个是准确的?
现在准备些一个模块来实现这个功能。
有pid可以得到进程的task_struct ,然后再得到files_struct 以及其中的ftable ,
但是在ftable中没有直接定义变量来说明打开的文件数,这个应该怎么办?
有谁能解释一下,接下来怎么做?
void fileOpenNo(pid_t pid)
{
struct task_struct *task;
struct files_struct *fs;
struct fdtable *fd;
task=pid_task(find_vpid(pid), PIDTYPE_PID);
fs=task->files;
fd=&(fs->fdt);
printk("the no is %d\n",fd->max_fds); //max-fds并不是定义打开的文件数}