2015-01-14 7 views
6

यदि मेरे निष्पादन योग्य dlopen को लाइब्रेरी लोड करने के लिए कॉल करता है लेकिन dlclose पर कॉल करने के लिए उपेक्षा करता है, तो लाइब्रेरी लोड हो जाएगी जब तक कि प्रक्रिया समाप्त नहीं हो जाती और ओएस इसे अनलोड करने के लिए मजबूर करता है।क्या एक लोड रिसाव है यदि dlopen() को dlopen'd लाइब्रेरी से बुलाया जाता है?

अगर मैं a.so जो b.so लोड करता है लोड, तो a.so पर dlclose फोन ओएस उतारना b.so रूप में अच्छी तरह करता है?

यह माइक्रोसॉफ्ट समकक्ष, LoadLibraryEx का उपयोग कर एक समान परिदृश्य के साथ तुलना कैसे करता है?

उत्तर

3

एप्लिकेशन को केवल सीधे लोड करने के बारे में चिंता करने की आवश्यकता है। यदि आप a.so लोड करते हैं, तो आपको a.so को अनलोड करने के बारे में चिंतित होने की आवश्यकता है।

यदि a.sob.so को अनलोड करने से इंकार कर देता है, तो यह a.so के साथ समस्या है, इसलिए आपका ऐप इसके लिए ज़िम्मेदार नहीं है। a.so के लेखक को उनके कार्य को एक साथ प्राप्त करने और अपनी लाइब्रेरी के साथ समस्या को ठीक करने की आवश्यकता है।

+0

धन्यवाद। क्या आपको पता है कि यह जानकारी दस्तावेज में 'dl *' के लिए कहां मिल सकती है? मैंने http://linux.die.net/man/3/dlopen पढ़ा लेकिन उसे – Kietz

+0

नहीं मिला, मैं ज्यादातर विंडोज प्रोग्रामिंग करता हूं, लिनक्स/यूनिक्स नहीं, लेकिन मुझे नहीं लगता कि इसे आधिकारिक रूप से दस्तावेज करने की आवश्यकता है। सभी मॉड्यूल कर सकते हैं खुद wrt लोडिंग पुस्तकालयों के लिए जिम्मेदार है। क्या होगा यदि लाइब्रेरी एक तृतीय पक्ष है, जहां तीसरी पार्टी कुछ सेटिंग, पर्यावरण चल रहा है, आदि के आधार पर 1,2,3, या कोई मॉड्यूल लोड नहीं कर सकती है। क्या आपका एप्लिकेशन इस तीसरे- पार्टी मॉड्यूल और यह आंतरिक रूप से क्या करता है? बिलकूल नही। – PaulMcKenzie

+0

तो यह निश्चित रूप से 'LoadLibrary *' और 'GetModuleHandle *' के मामले में है? क्या आप मुझे उन दस्तावेजों पर दस्तावेज दे सकते हैं? – Kietz

संबंधित मुद्दे