मुझे पता है कि जब मैं लिनक्स में exec()
सिस्टम कॉल में से एक को कॉल करता हूं तो यह वर्तमान में चल रही प्रक्रिया को एक नई छवि के साथ बदल देगा। तो जब मैंने एक नई प्रक्रिया का फोर्क किया और exec()
चलाया, तो बच्चे को नई प्रक्रिया के साथ बदल दिया जाएगा।निष्पादन के बाद malloced स्मृति के साथ क्या होता है() प्रोग्राम छवि को बदलता है?
ढेर से आवंटित किसी भी स्मृति के साथ क्या होता है? मान लें कि मैं आज्ञाओं की मनमानी संख्या को पार्स करना चाहता हूं और इसे exec()
में भेजना चाहता हूं। इस मनमानी संख्या को पकड़ने के लिए, मुझे शायद किसी बिंदु पर स्मृति आवंटित करना होगा क्योंकि मुझे नहीं लगता कि मैं इसे स्थिर आकार के सरणी के साथ सही तरीके से कर सकता हूं, इसलिए मैं malloc()
या कुछ समकक्ष का उपयोग करूंगा।
मुझे exec()
कहने के बाद तक इस स्मृति को आवंटित रखने की आवश्यकता है, लेकिन exec()
कभी वापस नहीं आती है।
क्या स्मृति ऑपरेटिंग सिस्टम द्वारा पुनः प्राप्त की जाती है?
बीटीडब्ल्यू यहां एक बहुत ही समान प्रश्न हैं http://stackoverflow.com/questions/3617332/what-happens-with-memory-usage-after-exec – sharptooth