shm_open()
- एक पूर्वनिर्धारित बड़ा
length
fork()
(कई बार) के साथmmap()
ftruncate()
होगा पर
इस की बात यह सुनिश्चित करें कि fork()
द्वारा पैदा की हर प्रक्रिया एक है बनाने के लिए है एक ही पते पर साझा खंड। फिर भी, मैं रैम को हर समय व्यस्त रखना नहीं चाहता, लेकिन गतिशील रूप से इसका आकार बदलता हूं (आकार के साथ 0 - बड़े length
)।क्या यह बेन मेमापड के बाद साझा किए गए मेमोरी ऑब्जेक्ट को ftruncate करना सुरक्षित है?
क्या यह काम कर सकता है? क्या यूबी है?
यही वह है जो मैं मानता हूं, लेकिन क्या 'मुनमप' ट्रिगर गंदे पृष्ठों को लिख सकता है जो 'सिगबुस' को ट्रिगर कर सकता है? –
इसे स्वीकार करने के रूप में चिह्नित करना, क्योंकि यह मेरे प्रश्न का उत्तर देता है। लेकिन डेमन की विधि बेहतर प्रबंधनीय है (मैं 'mmap'ed रेंज के बीच में पृष्ठों को अनलोड कर सकता हूं)। –
@nneonneo मुझे नहीं लगता कि यह काफी सही है। मेरा मानना है कि मैपिंग को अपडेट करने के लिए आपको 'ftruncate' के बाद' mremap' करने की आवश्यकता है। फिर भी आपको 'EremM' के साथ विफल होने 'mremap' को रोकने के लिए मूल रूप से बड़े आकार को आवंटित करना चाहिए। – jleahy