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

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

我正在看:

[C++]: ticks total nonlib name 23398 63.6% 63.8% ___mac_get_pid 

什么是___mac_get_pid ? 这个名字无疑暗示了这是一些“在Mac上获得PID”的代码,但时间似乎过度了。

谷歌search没有提供任何有用的。

__mac_get_pidmac_get_pid库函数的系统调用。 它在手册页mac_get描述: http : 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项目的一部分引入”)。 mac_get_pid 在macOS / Dawrin / XNU中被实现为“Extended non-POSIX.1e interfaces”。

可能在使用的nodejs库中有一些方法试图用进程列表(如ps / top)做详细的工作,但是他们无法限制他们请求的速度。 通过手动停止和检查回溯直到find谁调用mac_get_pid (继续并停止),使用profiler(不是v8 profiler ,它只跟踪js ,但跟随nodejs进程的一些外部事件探查器)或debugging器(gdb / lldb)获取多个与mac_get_pid stacktraces再次,当你不在mac_get_pid )是需要找出mac_get_pid它的步骤。