打开的文件

Process.open_files() - 原文

以命名元组列表返回进程打开的常规文件,包括以下字段:

  • path: 绝对文件名。
  • fd: 文件描述符编号; 在 Windows 上,这始终是 -1。

仅限 Linux:

  • position (Linux): 文件(偏移)位置。
  • mode (Linux): 一个字符串,指示文件是如何打开的,类似于 open 内置模式参数。 可能的值为“r”“w”“a”“r+”“a+”。 以二进制或文本模式(“b”“t”)打开的文件之间没有区别。
  • flags (Linux): 打开文件时传递给底层 C 调用 os.open 的标志(例如 [os.O_RDONLY]、[os.O_TRUNC] 等)。
>>> import psutil
>>> f = open('file.ext', 'w')
>>> p = psutil.Process()
>>> p.open_files()
[popenfile(path='/home/giampaolo/svn/psutil/file.ext', fd=3, position=0, mode='w', flags=32769)]

⚠️警告: 在 Windows 上,由于底层 Windows API 的一些限制,在检索某些文件句柄时可能会挂起,因此此方法不可靠。 为了解决这个问题,psutil 会生成一个线程来确定文件句柄名称,如果它在 100 毫秒后没有响应,则将其杀死。这意味着 Windows 上的此方法不能保证枚举所有常规文件句柄(请参阅问题 597)。 像 ProcessHacker 这样的工具也有同样的限制。

⚠️警告: 在 BSD 上,由于内核错误,此方法可以返回带有空路径(“”)的文件,因此它不可靠(请参阅问题 597)。

3.1.0 版本中修改: 不再挂在 Windows 上。

4.1.0 版本中修改: Linux平台中新增 position , modeflags 字段。