2016-03-17 40 views
5

Bir denetleyicim var ve herhangi bir zamanda bu Danışman altında çalışan tüm süreçleri bilmek istiyorum. Tüm PID'leri, isimleri, vb. Tüm süreçleri bir amir veya bir düğüm altında almanın kolay bir yolu olmalı gibi görünüyor, ama hiçbir şey bulamıyorum.Elixir - Bir denetleyici altındaki tüm PID'leri bir denetleyici altından alın

Bunun nasıl yapılacağıyla ilgili öneriniz var mı?

+0

İleride başvurmak için Elixir Supervisor modülü burada belgelenmiştir: http://elixir-lang.org/docs/stable/elixir/Supervisor.html –

cevap

10

Sen Supervisor.which_children/1 kullanabilirsiniz: Bu fonksiyon içeren dizilerini listesini döndürür

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

:

id - çocuk şartnamede belirtilen şekilde iş: Bir simple_one_for_one amiri

durumunda tanımlanmamış

child - ilgili alt işlemin pid'i, atom: işlemin yeniden başlatılmak üzereyken yeniden başlatılması, veya: bu tür bir işlem yoksa undefined

türü -: işçisi veya: gözetmen çocuk şartnamede tanımlanan

modülleri - type ve sağlanan pid yana çocuk şartname

tanımlanan özyinelemeli oluşturmak için çocukları getirebilir Gerekirse tüm evrakların bir listesi.