C++ 节点配置文件中的uuuuuuu mac\u get\u pid符号是什么?

C++ 节点配置文件中的uuuuuuu mac\u get\u pid符号是什么?,c++,node.js,pid,C++,Node.js,Pid,我正在分析一些在OSX上运行的多进程nodejs代码 我看到: [C++]: ticks total nonlib name 23398 63.6% 63.8% ___mac_get_pid 什么是\uu mac\u get\u pid?它的名字无疑暗示着它是“在Mac上获得PID”的一些代码,但时间似乎太长了 谷歌搜索没有提供任何有用的东西。\uuuMac\uGet\uPID是mac\uGet\uPID库函数后面的系统调用。手册页mac\u get中对其进行了描述

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

我看到:

[C++]:
   ticks  total  nonlib   name
  23398   63.6%   63.8%  ___mac_get_pid
什么是
\uu mac\u get\u pid
?它的名字无疑暗示着它是“在Mac上获得PID”的一些代码,但时间似乎太长了


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

\uuuMac\uGet\uPID
mac\uGet\uPID
库函数后面的系统调用。手册页
mac\u get
中对其进行了描述:

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

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

这里的“MAC”不是MacOSX/macOS,而是(作为项目的一部分在FreeBSD5.0中引入的)。
mac_get_pid
是“扩展的非POSIX.1e接口”


可能在使用过的nodejs库中有一些方法试图对进程列表(如ps/top)进行详细的处理,但它们无法限制请求的速率。使用探查器(不仅仅是stacktraces,而是连接到nodejs进程的一些外部探查器)或调试器(gdb/lldb),通过手动停止并检查回溯,直到找到调用
mac\u get\u pid的人,使用
mac\u pid
获取多个stacktraces(不在
mac\u get\u pid
时继续并再次停止)是找出是谁打电话的必要步骤。

@closevoter您能指出您对这个问题的担忧吗?这是一个合法的问题,我正在寻找并回答,如果可能的话,我很想改进它。Dancrumb,您的探查器是什么,您是如何启动的。是否有任何探查器能够记录调用堆栈的?或者尝试停止appl在调试器中多次初始化(gdb/lldb)点击
\uuu mac\u get\u pid
查看回溯,以了解谁调用了它。你的操作系统是什么,你的应用程序是什么,是否有进程列表函数?你使用哪些库?Dancrumb,你在配置文件中列出了其他函数吗?你能发布更多的配置文件部分吗,包括C/C++和节点函数?其中一些可能会e关于uuuuuuuu mac_uget_upid的提示;可能连接到等待某些进程/线程和/或连接(或者可能在这附近有一些超时)。您使用哪些库/模式将多个进程连接在一起并交换消息?您是否有sort nodejs示例来重现这种情况?OSX/macOS和nodejs的版本是什么?@osgx这可能远远超出了这个特定问题的范围。为了您的启发,这是OSX上的一个nodejs应用程序正在使用本机节点
child\u进程
函数生成多个进程,然后与多个进程通信。我猜这些调用与IPC请求相关。这超出了“是什么”的范围,但对于“为什么它在配置文件中如此高”的问题可能很有用,并且有时会出现这个问题(其中一个链接:)2003年关于TrustedBSD设计的论文:“TrustedBSD MAC框架:FreeBSD 5.0的可扩展内核访问控制”:“…标签管理库和系统调用,允许应用程序以抽象方式处理MAC标签和元素检索当前或任意进程的标签;设置当前进程标签。MAC_get_pid().MAC管理可能也需要用于登录/授权管理。。。