我应该如何解释活动监视器“打开文件和端口”的输出?

zne*_*eak 5 process macos

我正在尝试调试程序中的文件描述符泄漏。我正在查看活动监视器的“打开文件和端口”窗口,希望收集一些信息。

我看到了几种类型的条目。这是一个示例:

cwd
/
txt
/Applications/Utilities/Activity Monitor.app/Contents/MacOS/Activity Monitor
0
/dev/null
1
/dev/null
2
/dev/null
3
4
5
6
7
->0x1c8e9b47ad822e5b
Run Code Online (Sandbox Code Playgroud)

我相信我对这种格式有以下几点了解:

  • 一般来说,第一行告诉文件描述符,第二行显示它指向的位置:
    • cwd /表示应用程序的当前目录是/
    • txt /Applications/.../Activity Monitor意味着“活动监视器”被映射到内存中而没有打开的文件描述符
    • 0 /dev/null表示文件描述符 0 与 /dev/null 关联
    • 7 ->0x1c8e9b47ad822e5b意味着文件描述符 7 与没有持久名称的类文件对象关联(?)

但是文件描述符 3 到 6 又如何呢?它们与什么相关?

zne*_*eak 2

活动监视器显示 的结果lsof -Fn -p [pid],从每行中剥离第一个字符。丢失的文件条目的含义仍不清楚,但常规的可能性显示在 lsof 手册页(man lsof在终端中)的 NAME 部分下。