2016-03-17 12 views
5

Mam superwizora i chcę wiedzieć wszystkie procesy działające pod nadzorem w danym momencie. Wygląda na to, że powinien istnieć łatwy sposób uzyskania wszystkich PIDów, nazw itp. Dla wszystkich procesów pod nadzorem lub w węźle, ale nie mogę znaleźć niczego.Eliksir - Uzyskaj wszystkie PID dla procesów pod nadzorem

Wszelkie sugestie, jak to zrobić?

+0

W celu późniejszego wykorzystania, moduł Elixir Supervisor jest udokumentowany tutaj: http://elixir-lang.org/docs/stable/elixir/Supervisor.html –

Odpowiedz

10

Można użyć Supervisor.which_children/1:

iex> Supervisor.which_children(MyApp.Supervisor) 
[{MyApp.SubSupervisor, #PID<0.1695.0>, :supervisor, [MyApp.SubSupervisor]}, 
{MyApp.Endpoint, #PID<0.1686.0>, :supervisor, [MyApp.Endpoint]}] 

Funkcja ta zwraca listę krotek zawierających:

id - jak określono w specyfikacji dziecko lub: niezdefiniowane w przypadku przełożonego simple_one_for_one

child - pid odpowiedniego procesu potomnego, atom: restartowanie, jeśli proces ma zostać ponownie uruchomiony, lub: undefined, jeśli nie ma takiego procesu

typ -: pracownik lub: nadzorca, jak określono w specyfikacji dziecięcej

moduły - jak określono w specyfikacji dziecięcej

Od type i pid są przewidziane można rekurencyjnie sprowadzić dzieci do wygenerowania w razie potrzeby listę wszystkich aparatów oddechowych.

Powiązane problemy