如何用psutil获取这个进程使用的文件描述符的真实数量?

How to obtain the real number of file descriptors used by this process with psutil?

我目前正在测试 psutil API。 当我 运行 这个命令(为了知道文件描述符的数量)时:

p = psutil.Process(PID)
p.num_fds()

我得到 70 个文件描述符。

但是,当我 运行 这个命令与相同的 PID:

p.open_files()

我只得到27

这是什么原因?

原因是 open_files() returns 仅常规文件,但一个进程可能会打开许多​​其他类型的 fds(套接字、管道等)。像 lsof 这样的工具会报告所有这些。我决定不在 psutil 中做同样的事情,因为它太复杂、级别太低,而且无法通过使用一致的 API.

进行移植。