我正在尝试调试程序中的文件描述符泄漏。我正在查看活动监视器的“打开文件和端口”窗口,希望收集一些信息。
我看到了几种类型的条目。以下是示例:
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
我认为我了解这种格式的几个方面:
- 一般来说,第一行告诉文件描述符,第二行显示它指向的位置:
cwd /
表示应用程序的当前目录是 /txt /Applications/.../Activity Monitor
意味着“活动监视器”被映射到内存中,而没有打开文件描述符0 /dev/null
表示文件描述符 0 与 /dev/null 关联7 ->0x1c8e9b47ad822e5b
意味着文件描述符 7 与没有持久名称的文件类对象相关联(?)
但是文件描述符 3 到 6 呢?它们与什么相关?
答案1
活动监视器显示的结果,删除了每行的第一个字符。缺失文件条目的含义仍不清楚,但 lsof 手册页(在终端中)的 NAME 部分下lsof -Fn -p [pid]
显示了常见的可能性。man lsof