2013-01-08 2 views
6

द्वारा लिखे गए जावा का उपयोग करके साझा स्मृति डेटा पढ़ना मेरे पास सी/सी ++ में एक एप्लिकेशन है जो यूनिक्स में साझा स्मृति में डेटा लिखता है। अब मैं जावा का उपयोग कर प्रोग्राम के माध्यम से साझा स्मृति डेटा को पढ़ना चाहता हूं।सी ++

कार्यक्रम साझा स्मृति डेटा को पढ़ना चाहिए। क्या यह संभव हो सकता है?

यदि संभव हो तो एक छोटे से कार्यान्वयन की आवश्यकता है।

+1

साझा स्मृति पढ़ना अगर कभी जेएनआई के माध्यम से काम करता है - जावा में आप ऐसा नहीं कर सकते हैं। जेएनआई के साथ मेरा अनुभव यह था कि कुछ जेएनआई-प्लगइन्स अन्यथा रॉक-ठोस जावा वीएम को दुर्घटनाग्रस्त कर देते हैं। तो शायद एक और समाधान संभव है? – luukes

+0

यह उत्तर http://stackoverflow.com/a/1492536/1741542 स्मृति मैप की गई फ़ाइलों और एनआईओ फ़ाइल चैनल के बारे में वार्तालाप करता है। शायद यह आपके लिए भी काम करता है। –

+0

यदि आपको डेटा की दृढ़ता से लाभ होगा (यहां तक ​​कि डीबगिंग उद्देश्यों के लिए) तो आप स्मृति मैप की गई फ़ाइलों पर विचार कर सकते हैं। यहां एक कार्यान्वयन जो शुद्ध जावा का उपयोग करता है https://github.com/peter-lawrey/Java-Chronicle –

उत्तर

5

this codeproject परियोजना (Windows के लिए) पर एक नज़र डालें:

मैप फ़ाइलें और JNI मेमोरी का उपयोग जावा और सी ++ कार्यक्रमों

या, this पुस्तकालय के बीच संवाद:

CLIPC एक ओपन-सोर्स जावा लाइब्रेरी है जो डेवलपर्स को इंटरप्रोसेस कमू देता है शून्य वितरण (आईपीसी) क्षमताओं जो अनुपस्थित हो सकती है या जावा वितरण में उपयोग करना मुश्किल हो सकता है।

+0

क्या मैं साझा स्मृति को पढ़ने के लिए केवल C++ में कोई विधि बना सकता हूं, और फिर जेएनआई का उपयोग करके इस विधि को कॉल कर सकता हूं? क्या यह प्रभावी होगा और प्रदर्शन को भी नुकसान नहीं पहुंचाएगा? – Nikhil

+0

जेएनआई विधियों को जावा से सी ++ नहीं कॉल करना चाहिए। हां आप साझा स्मृति से/पढ़ने/लिखने के लिए सी ++ में एक विधि बना सकते हैं। और आप जेएनआई विधियों के साथ जावा में भी वही कर सकते हैं। यदि आप इसे सही करते हैं तो प्रदर्शन के बारे में चिंता न करें। – deepmax

+0

क्या आप कृपया मुझे सुझाव बता सकते हैं कि मैं नीचे की कार्यक्षमता कैसे प्राप्त कर सकता हूं? – Nikhil