问题描述
for pid <- Process.list,do: {pid,Process.info(pid,:registered_name)}
[
{#PID<0.0.0>,{:registered_name,:init}},{#PID<0.1.0>,:erts_code_purger}},...
示例:仅获取其寄存器名称中包含子字符串 MyApp
的进程。
解决方法
最好用 Enum.reduce/3
一次性完成
Enum.reduce(Process.list(),[],fn(pid),acc ->
with {:registered_name,name} = reg_name <- Process.info(pid,:registered_name),true <- name |> to_string() |> String.contains?("proxy"),do: [reg_name | acc],else: (_ -> acc)
end)
,
Process.list
|> Enum.filter(fn(pid) ->
{:registered_name,name} = Process.info(pid,:registered_name)
to_string(name) =~ "MyApp"
end)
|> Enum.map(fn pid -> Process.info(pid,:registered_name) end)