2011-02-05 7 views
6

में एम्बेड किया गया है, मैं एर कोड VM में एरलांग वीएम को एम्बेड करना चाहता हूं ... मैं पोर्ट्स, लिंक्डइन ड्राइवरों आदि से परिचित हूं। मैं चाहता हूं कि सी प्रोग्राम एरलांग वीएम शुरू करे, और फिर एरलांग प्रक्रियाओं को संदेश पास करें, और उन संदेशों को सी कोड पर वापस पास करें। मैं नहीं चाहता कि erlang VM वह हो जो पहले शुरू होता है और फिर कभी-कभी सी कोड को आमंत्रित करता है। मेरे अपने कारण हैं।
मुझे पता है कि यह नकारात्मक रूप से एरलांग द्वारा दी गई स्थिरता गारंटी को प्रभावित करता है, जिसका अर्थ है कि जब मास्टर सी कोड क्रैश हो जाता है तो यह एरलांग वीएम को भी नीचे ले जाएगा, क्योंकि वे एक ही प्रक्रिया में चल रहे हैं। मैं उन घटनाओं के साथ रहने के लिए तैयार हूं ...एरलांग सी

क्या यह भी संभव है?

धन्यवाद

+1

+1 बिना किसी टिप्पणी के डाउनवोट को संतुलित करने के लिए। यह एक उचित सवाल की तरह लगता है, डेवलपर्स erlang करने के लिए ब्याज की। –

+0

महत्वपूर्ण भी है कि आप ऐसा क्यों करना चाहते हैं? यदि आप केवल "आपके कारण हैं" तो कहते हैं कि उत्तर से अधिक लाभ उठाने की संभावना नहीं है। मेरा मतलब है कि यह संभव है, क्योंकि आपके पास स्रोत है। लेकिन अगर यह समझ में आता है तो एक और सवाल है। इसके अलावा आपके सी कोड के साथ कैसे बातचीत करें, जिस तरीके से आप इसे एकीकृत करना चाहते हैं। –

उत्तर

2

ऐसा करने का एकमात्र तरीका यह है कि एरलांग वीएम से सी कोड लोड करना है, इसके विपरीत नहीं।

बॉक्स से बाहर संभव नहीं है, लेकिन चूंकि आपके पास एरलांग स्रोत तक पहुंच है, इसलिए आप जो भी चाहते हैं उसे करना स्पष्ट रूप से संभव है यदि आप कोड को संशोधित करने में काफी समय व्यतीत करना चाहते हैं। यह इस रास्ते को नीचे जाने के लिए आपके समय का अच्छा उपयोग नहीं है।

+0

हाँ, मुझे लगता है कि पिछली रात ... पुष्टि के लिए धन्यवाद। ऐसा लगता है कि एरलांग वास्तव में परम नियंत्रक है, इसके अलावा कोई और विकल्प शुरू करने के अलावा कोई विकल्प नहीं है;))। मैं दिल erlang;)) – deepblue

3

सबसे आसान तरीका है बस एक अलग प्रक्रिया के रूप में लॉन्च, और फिर संवाद करने के लिए stdin और stdout उपयोग करने के लिए किया जाएगा। जो भी प्लेटफार्म आप लक्षित कर रहे हैं, उसके दस्तावेज़ों को बस पढ़ने से आपको यह पता चल जाएगा कि यह कैसे करें।

+0

मैं उस दृष्टिकोण से परिचित हूं ... डोमेन सॉकेट भी एक विकल्प हैं, या मेमोरी मैप की गई फ़ाइलों का उपयोग सीधे ... मेरा लक्ष्य हालांकि कस्टम सी कोड और एर्लांग वीएम के बीच एक ही मेमोरी स्पेस साझा करना है ... ओएस कर्नेल को एरलांग और सी कोड, कोई संदर्भ स्विचिंग इत्यादि के बीच संचार I/o के लिए कभी भी स्पर्श नहीं किया जाएगा ... – deepblue