क्या ऐसे कार्य हैं जो ओटीपी प्रक्रिया को अपने पर्यवेक्षक के ढक्कन को खोजने की अनुमति देंगे?ओटीपी प्रक्रिया के पर्यवेक्षक को कैसे ढूंढें?
उत्तर
डेटा प्रविष्टि '$ancestors'
के तहत प्रक्रिया शब्दकोश (के किसी भी प्रक्रिया proc_lib
साथ पैदा की) में छिपा हुआ है:
1> proc_lib:spawn(fun() -> timer:sleep(infinity) end).
<0.33.0>
2> i(0,33,0).
[{current_function,{timer,sleep,1}},
{initial_call,{proc_lib,init_p,3}},
{status,waiting},
{message_queue_len,0},
{messages,[]},
{links,[]},
{dictionary,[{'$ancestors',[<0.31.0>]},
{'$initial_call',{erl_eval,'-expr/5-fun-1-',0}}]},
{trap_exit,false},
{error_handler,error_handler},
{priority,normal},
{group_leader,<0.24.0>},
{total_heap_size,233},
{heap_size,233},
{stack_size,6},
{reductions,62},
{garbage_collection,[{min_bin_vheap_size,46368},
{min_heap_size,233},
{fullsweep_after,65535},
{minor_gcs,0}]},
{suspending,[]}]
यहाँ लाइन है कि हितों हमें {dictionary,[{'$ancestors',[<0.31.0>]},
है।
ध्यान दें कि यह ऐसी चीज है जो आपको शायद ही कभी खुद का उपयोग करने का कोई कारण हो। जहां तक मुझे पता है, यह ज्यादातर आपके पास जो भी कोड है, उसके लिए आत्मनिरीक्षण के बजाय पर्यवेक्षण पेड़ में साफ समाप्ति को संभालने के लिए उपयोग किया जाता है। ध्यान से संभालें।
OTP के समझदार धर्मशाला के साथ खिलवाड़ होगा बिना काम करने के लिए एक क्लीनर तरीका है जब यह शुरू करने पर्यवेक्षक की प्रक्रिया के लिए एक तर्क के रूप में अपनी पीआईडी पारित किया है। यह उन लोगों के लिए बहुत कम भ्रमित होना चाहिए जो आपका कोड पढ़ेंगे।
हां, यह एक अच्छा विचार की तरह दिखता है। –
मैं पर्यवेक्षक पिड के पास भी जाऊंगा। इसे लागू करना और बनाए रखना आसान है। –
आप इसे गलत क्या करना चाहते हैं, तो यहाँ हमारे समाधान है:
%% @spec get_ancestors(proc()) -> [proc()]
%% @doc Find the supervisor for a process by introspection of proc_lib
%% $ancestors (WARNING: relies on an implementation detail of OTP).
get_ancestors(Pid) when is_pid(Pid) ->
case erlang:process_info(Pid, dictionary) of
{dictionary, D} ->
ancestors_from_dict(D);
_ ->
[]
end;
get_ancestors(undefined) ->
[];
get_ancestors(Name) when is_atom(Name) ->
get_ancestors(whereis(Name)).
ancestors_from_dict([]) ->
[];
ancestors_from_dict([{'$ancestors', Ancestors} | _Rest]) ->
Ancestors;
ancestors_from_dict([_Head | Rest]) ->
ancestors_from_dict(Rest).
- 1. erlang ओटीपी पर्यवेक्षक क्रैशिंग
- 2. आईओओ अक्सर प्रक्रिया को कैसे ढूंढें?
- 3. एरलांग/ओटीपी
- 4. Erlang OTP पर्यवेक्षक व्यवहार का उपयोग कर कस्टम स्थिति के साथ बच्चे को पुनरारंभ कैसे करें?
- 5. एरलांग: पर्यवेक्षक (3), एक बाल प्रक्रिया
- 6. एरलांग/ओटीपी
- 7. ओटीपी सिद्धांतों का उपयोग कर गैर-अवरुद्ध टीसीपी सर्वर
- 8. पर्यवेक्षक
- 9. पर्यवेक्षक के लिए लॉगिंग
- 10. एसक्यूएल सर्वर में संग्रहित प्रक्रिया निष्पादन समय कैसे ढूंढें?
- 11. पर्यवेक्षक को फिर से लोड करना प्रक्रिया को रोकने के लिए कारण बन जाएगा?
- 12. एरलांग/ओटीपी अनुप्रयोगों में gen_server का उपयोग कब करें
- 13. रिकॉर्ड ऑरैकल के विभाजन को कैसे ढूंढें
- 14. डीसी के आयामों को कैसे ढूंढें?
- 15. छवि के घूर्णन कोण को कैसे ढूंढें?
- 16. वर्णमाला के अगले चरित्र को कैसे ढूंढें?
- 17. आयत के केंद्र समन्वय को कैसे ढूंढें?
- 18. फ़ाइल के एन्कोडिंग को कैसे ढूंढें? सी #
- 19. स्क्रीन को कैसे ढूंढें एंड्रॉइड
- 20. रूट UIViewController को कैसे ढूंढें
- 21. लिनक्स प्रक्रिया के पृष्ठ तालिका आकार और अन्य कर्नेल एकाउंटिंग को कैसे ढूंढें या गणना करें?
- 22. कागजात के कोने को ढूंढें
- 23. क्रैश के बाद मैं प्रक्रिया स्थिति को कैसे पुनर्स्थापित कर सकता हूं?
- 24. UIView में NSNotification के लिए पर्यवेक्षक को कैसे निकालें?
- 25. प्लगइन के बिना Jquery में "पर्यवेक्षक" को कैसे कार्यान्वित करें?
- 26. टोरनाडो पर्यवेक्षक
- 27. एरलांग पर्यवेक्षक अंतराल
- 28. दुर्लभ बग कैसे ढूंढें?
- 29. Magento पर्यवेक्षक
- 30. पर्यवेक्षक पैटर्न -
कोई विचार है, लेकिन पर्यवेक्षक afaik आप लिंक किए गए प्रक्रियाओं हो और कर सकते हैं उनमें से एक है। – ZeissS