【问题标题】:How can I programmatically get the list of open file descriptors for a given PID on OS X?如何以编程方式获取 OS X 上给定 PID 的打开文件描述符列表?
【发布时间】:2013-03-13 02:09:39
【问题描述】:

我所看到的一切都说要使用 lsof -p,但我正在寻找不需要 fork/exec 的东西。

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

【问题讨论】:

  • 你检查过lsof source code吗?
  • 我研究了 15 分钟左右,但我的 C 语言非常糟糕,无法理解它。我会继续戳它,如果我想出什么东西,我会自己发布它作为答案:)

标签: c macos pid file-descriptor


【解决方案1】:

您可以use proc_pidinfo 使用PROC_PIDLISTFDS 选项来枚举给定进程使用的文件。然后,您可以在每个文件上依次使用proc_pidfdinfoPROC_PIDFDVNODEPATHINFO 选项来获取其路径。

【讨论】:

  • 这个 API 有什么好的手册页或其他文档吗?我一直在 ctags-ing 我的方式 /usr/include 并阅读您提供的示例,但它非常简洁。
  • 我知道没有任何文档。 sys/proc_info.h 在解释系统调用中可用的信息方面似乎相对不言自明,如果您想了解更多关于它是如何工作的,系统调用的实现可以在内核开源中获得。
猜你喜欢
  • 1970-01-01
  • 2023-04-02
  • 2014-05-02
  • 2019-03-25
  • 1970-01-01
  • 1970-01-01
  • 2011-08-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多