Erlang 21

script




erlang

script

फ़ाइल

लिपि

फ़ाइल सारांश

बूट स्क्रिप्ट

विवरण

बूट स्क्रिप्ट बताता है कि एरलांग रनटाइम सिस्टम कैसे शुरू किया जाता है। इसमें निर्देश हैं कि किस कोड को लोड करना है और किन प्रक्रियाओं और अनुप्रयोगों को शुरू करना है।

कमांड erl -boot Name सिस्टम को बूट फ़ाइल के साथ शुरू करता है erl -boot Name होता है, जो Name.script फाइल से उत्पन्न होता है, जो Name.script का उपयोग systools:script2boot/1

.script फ़ाइल को .rel फ़ाइल और .app फ़ाइलों से .rel द्वारा systools जाता है।

फ़ाइल सिंटैक्स

बूट स्क्रिप्ट को एक्सटेंशन .script साथ एक फ़ाइल में संग्रहीत किया जाता है। फ़ाइल में निम्न सिंटैक्स है:

{script, {Name, Vsn},
 [
  {progress, loading},
  {preLoaded, [Mod1, Mod2, ...]},
  {path, [Dir1,"$ROOT/Dir",...]}.
  {primLoad, [Mod1, Mod2, ...]},
  ...
  {kernel_load_completed},
  {progress, loaded},
  {kernelProcess, Name, {Mod, Func, Args}},
  ...
  {apply, {Mod, Func, Args}},
  ...
  {progress, started}]}.
Name = string()

सिस्टम नाम को परिभाषित करता है।

Vsn = string()

सिस्टम संस्करण को परिभाषित करता है।

{progress, Term}

आरंभीकरण कार्यक्रम की "प्रगति" सेट करता है। init:get_status/0 फ़ंक्शन प्रगति का वर्तमान मान लौटाता है, जो कि {InternalStatus,Term}

{path, [Dir]}

Dir एक स्ट्रिंग है। यह तर्क सिस्टम के लोड पथ को [Dir] सेट करता है। मॉड्यूल लोड करने के लिए उपयोग किए जाने वाले लोड पथ को प्रारंभिक लोड पथ से प्राप्त किया जाता है, जो स्क्रिप्ट फ़ाइल में दिया जाता है, साथ में कमांड-लाइन तर्कों में आपूर्ति किए गए किसी भी पथ के झंडे। निम्नानुसार कमांड-लाइन तर्क पथ को संशोधित करते हैं:

  • -pa Dir1 Dir2 ... DirN शुरुआती लोड पथ के सामने DirN, DirN-1, ..., Dir2, Dir1 निर्देशिका जोड़ता है।
  • -pz Dir1 Dir2 ... DirN शुरुआती लोड पथ के अंत में Dir1, Dir2, ..., DirN निर्देशिका जोड़ता है।
  • -path Dir1 Dir2 ... DirN निर्देशिका Dir1, Dir2, ..., DirN का एक सेट परिभाषित करता है, जो स्क्रिप्ट फ़ाइल में दिए गए खोज पथ को प्रतिस्थापित करता है। पथ के निर्देशिका नाम इस प्रकार हैं:

    • निर्देशिका नाम जिनके साथ शुरू / माना जाता है कि वे पूर्ण पथ नाम हैं।
    • निर्देशिका के नाम जिनके साथ शुरू नहीं होता / माना जाता है कि वे वर्तमान कामकाजी निर्देशिका के सापेक्ष हैं।
    • विशेष $ROOT वैरिएबल का उपयोग केवल स्क्रिप्ट में किया जा सकता है, कमांड-लाइन तर्क के रूप में नहीं। दी गई निर्देशिका Erlang अधिष्ठापन निर्देशिका के सापेक्ष है।
{primLoad, [Mod]}

Path में निर्दिष्ट निर्देशिकाओं से मॉड्यूल [Mod] लोड करता है। स्क्रिप्ट दुभाषिया erl_prim_loader:get_file(Mod) को कॉल करके उपयुक्त मॉड्यूल प्राप्त करता है। सिस्टम को समाप्त करने वाली एक घातक त्रुटि तब होती है जब मॉड्यूल स्थित नहीं हो सकता है।

{kernel_load_completed}

इंगित करता है कि किसी भी प्रक्रिया को शुरू करने से पहले सभी मॉड्यूल लोड किए जाने चाहिए । इंटरेक्टिव मोड में, सभी {primLoad,[Mod]} कमांड्स को इस कमांड को नजरअंदाज करने के बाद व्याख्या की जाती है, और ये मॉड्यूल डिमांड पर लोड होते हैं। एम्बेडेड मोड में, kernel_load_completed को अनदेखा किया जाता है, और सिस्टम प्रारंभ के दौरान सभी मॉड्यूल लोड किए जाते हैं।

{kernelProcess, Name, {Mod, Func, Args}}

apply(Mod, Func, Args) मूल्यांकन करके "कर्नेल प्रक्रिया" Name शुरू करता है। प्रारंभ कार्य {ok, Pid} को वापस ignore या ignore init प्रक्रिया, Pid के व्यवहार की निगरानी करती है और यदि Pid मृत्यु हो जाती है, तो सिस्टम को समाप्त कर देती है। कर्नेल प्रक्रिया रनटाइम सिस्टम के प्रमुख घटक हैं। उपयोगकर्ता सामान्य रूप से नई कर्नेल प्रक्रिया नहीं जोड़ते हैं।

{apply, {Mod, Func, Args}}

apply(Mod, Func, Args) प्रक्रिया का मूल्यांकन apply(Mod, Func, Args) । यदि सिस्टम में कोई त्रुटि होती है, तो सिस्टम समाप्त हो जाता है। यदि यह फ़ंक्शन कभी नहीं लौटता है तो बूट प्रक्रिया लटकी रहती है।

ध्यान दें

एक इंटरैक्टिव सिस्टम में, कोड लोडर मांग-संचालित कोड लोडिंग प्रदान करता है, लेकिन एक एम्बेडेड सिस्टम में कोड लोडर सभी कोड को तुरंत लोड करता है। code का एक ही संस्करण दोनों मामलों में उपयोग किया जाता है। कोड सर्वर init:get_argument(mode) कॉल करता है init:get_argument(mode) यह निर्धारित करने के लिए कि क्या यह डिमांड मोड या गैर-डिमांड संचालित मोड में चलना है।

यह भी देखें

systools(3)