मेरी कोड है को प्रभावित करता है):LD_PRELOAD नए बच्चे unsetenv ("LD_PRELOAD") के बाद भी इस प्रकार
gcc preload.c -shared -Wl,-soname,mylib -o mylib.so -fPIC
LD_PRELOAD=./mylib.so bash
!!! आखिरी कमांड के साथ सावधान रहें, जिसके परिणामस्वरूप "sh -c ls" फोर्किंग के अंतहीन पाश का परिणाम होगा।^सी के साथ 2 सेकंड के बाद इसे रोकें, (या बेहतर^ज़ेड और फिर पीएस देखें)।
और जानकारी
- यह समस्या किसी तरह से पार्टी की योजना बनाई से संबंधित हैं; या तो उपयोगकर्ता द्वारा चलाए जाने वाले आदेश के रूप में, या पॉप को निष्पादित करने के रूप में।
- अतिरिक्त कुंजी कारक: 1) प्री-लोडेड लाइब्रेरी से पॉपन निष्पादित करें, 2) शायद लाइब्रेरी के प्रारंभिक अनुभाग में पॉपन करने की आवश्यकता है।
अगर आप का उपयोग करें:
पिछले आदेश के बजायLD_DEBUG=all LD_DEBUG_OUTPUT=/tmp/ld-debug LD_PRELOAD=./mylib.so bash
, आप /tmp/ld-debug.* नामित कई ld-डिबग फ़ाइलें प्राप्त होगा। प्रत्येक फोर्क प्रक्रिया के लिए एक। इन सभी फाइलों में आप देखेंगे कि प्रतीकों को पहली बार mylib.so में खोजा गया है, भले ही एलडी_PRELOAD को पर्यावरण से हटा दिया गया हो।
हम किस भाषा के बारे में बात कर रहे हैं? – mvds
हम सी भाषा – avner
@ user395074 के बारे में बात कर रहे हैं, तो शायद, आपको भाषा को प्रतिबिंबित करने के लिए अपने टैग को समायोजित करना चाहिए था ("संपादन" लिंक पर क्लिक करें)। साथ ही, [प्रीलोडर] टैग ओएस घटक को प्रतिबिंबित करने जैसा प्रतीत नहीं होता है जिस पर हम चर्चा कर रहे हैं। –