Elixir-在主管的领导下获取流程的所有PID
我有一个主管,我想知道在任何给定时间在该主管下运行的所有流程。似乎应该有一种简单的方法来获取主管下或节点中所有进程的所有PID、名称等,但我找不到任何东西 有什么建议吗?您可以使用:Elixir-在主管的领导下获取流程的所有PID,elixir,otp,Elixir,Otp,我有一个主管,我想知道在任何给定时间在该主管下运行的所有流程。似乎应该有一种简单的方法来获取主管下或节点中所有进程的所有PID、名称等,但我找不到任何东西 有什么建议吗?您可以使用: iex>Supervisor.who_儿童(MyApp.Supervisor) [{MyApp.SubSupervisor,#PID,:supervisor,[MyApp.SubSupervisor]}, {MyApp.Endpoint,#PID,:supervisor[MyApp.Endpoint]}] 返回一
iex>Supervisor.who_儿童(MyApp.Supervisor)
[{MyApp.SubSupervisor,#PID,:supervisor,[MyApp.SubSupervisor]},
{MyApp.Endpoint,#PID,:supervisor[MyApp.Endpoint]}]
返回一个列表,其中包含有关给定对象的所有子级的信息
主管
请注意,在监视大量数据时调用此函数
低记忆条件下的儿童可能导致记忆不足
例外
此函数返回{id,child,type,modules}
元组的列表,
其中:
-如子规范中所定义id
-对应子进程的PID,子进程
:如果 进程将要重新启动,或者如果没有此选项,则为
:未定义 过程
-类型
或:worker
,由子规范指定:supervisor
-由子规范指定模块
由于提供了
类型
和pid
,因此如果需要,您可以递归地获取子项以生成所有pid的列表。为供将来参考,Elixir Supervisor模块记录在此处:
iex> Supervisor.which_children(MyApp.Supervisor)
[{MyApp.SubSupervisor, #PID<0.1695.0>, :supervisor, [MyApp.SubSupervisor]},
{MyApp.Endpoint, #PID<0.1686.0>, :supervisor, [MyApp.Endpoint]}]