节点配置文件中的___mac_get_pid符号是什么?

Dan*_*umb 12 c++ pid node.js

我正在分析在OSX上运行的一些多进程nodejs代码.

我正在看:

[C++]:
   ticks  total  nonlib   name
  23398   63.6%   63.8%  ___mac_get_pid
Run Code Online (Sandbox Code Playgroud)

什么是___mac_get_pid?它的名字肯定暗示它是一些"在Mac上获得PID"的代码,但时间似乎过多.

谷歌搜索没有提供任何有用的东西.

osg*_*sgx 3

__mac_get_pidmac_get_pid库函数背后的系统调用。它在手册页中进行了描述mac_gethttp://man.cx/mac_get(3)

mac_get_pid .. 获取文件、套接字、套接字对等点或进程的标签 mac_get_pid() 和 mac_get_proc() 系统调用返回与任意进程 ID 或当前进程关联的进程标签。

必须首先使用 mac_prepare(3) 函数分配和准备用于这些调用的标签存储。当使用标签完成应用程序时,可以使用 mac_free(3) 返回内存。

这里的“MAC”不是 Mac OS X / macOS,而是POSIX.1e强制访问控制(“在 FreeBSD 5.0 中作为TrustedBSD项目的一部分引入”)。在 macOS/Dawrin/XNU 中mac_get_pid作为“扩展非 POSIX.1e 接口”实现。

使用的nodejs库中可能有一些方法尝试对进程列表(如ps/top)进行详细的工作,但它们无法限制其请求的速率。使用mac_get_pid探查器(不是仅跟踪js 的v8 探查器,而是附加到 nodejs 进程的一些外部探查器)或使用调试器(gdb/lldb)获取多个堆栈跟踪,通过手动停止和检查回溯,直到找到谁调用(继续并在以下情况下再次停止)你不在) 是找出是谁调用它的必要步骤。mac_get_pidmac_get_pid