Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Elixir-在主管的领导下获取流程的所有PID_Elixir_Otp - Fatal编程技术网

Elixir-在主管的领导下获取流程的所有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]}] 返回一

我有一个主管,我想知道在任何给定时间在该主管下运行的所有流程。似乎应该有一种简单的方法来获取主管下或节点中所有进程的所有PID、名称等,但我找不到任何东西

有什么建议吗?

您可以使用:

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]}]