如何在OS X上通过编程方式获取给定PID的打开文件描述符列表?

7

我看到的所有资料都建议使用lsof -p,但我正在寻找不需要fork/exec的东西。

例如,在Linux上,可以简单地遍历/proc/{pid}/fd


1
你有没有查看过 lsof 源代码 - autistic
我花了大约15分钟研究它,但我对C语言不太擅长,无法理解太多。我会继续尝试,如果有什么发现,我会自己发布答案的 :) - fmoo
1个回答

9
您可以使用PROC_PIDLISTFDS选项和proc_pidinfo来枚举给定进程使用的文件。然后,您可以依次对每个文件使用PROC_PIDFDVNODEPATHINFO选项和proc_pidfdinfo来获取其路径。

这个 API 有没有好的 man 手册或其他文档?我一直在 /usr/include 中使用 ctags,并阅读了你提供的示例,但它相当简略。 - fmoo
据我所知,没有任何文档。sys/proc_info.h在解释系统调用提供的信息方面似乎相对自我解释,如果您想更深入地了解其工作原理,可以在内核开源中找到系统调用的实现。 - bdash

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接