मैं एक बच्चे की प्रक्रिया के ढेर को पढ़ने की कोशिश कर रहा हूं, लेकिन भाग्य से नहीं। मुझे पता है कि इसका उपयोग करना संभव है ptrace
, लेकिन ptrace
इंटरफ़ेस आपको एक बार में केवल एक शब्द पढ़ने की अनुमति देता है, और मैं स्टैक के एक बड़े हिस्से को स्कैन करने की कोशिश कर रहा हूं।
मैंने इसे संलग्न करने के लिए पहली बार ptrace का उपयोग करने के बाद फ़ाइल /proc/$pid/mem
से निकाले गए स्टैक की सीमाओं से पढ़ने की भी कोशिश की /proc/$pid/maps
है (जैसा कि यहाँ सुझाव दिया गया है ) लेकिन यह पढ़ने में विफल रहता है (रूट के रूप में चलने पर भी) हालांकि एक ही कोड तब सफल होता है जब कोशिश की जाती है प्रक्रिया के विभिन्न भागों से पढ़ना (जैसे ढेर)।
मैं क्या गलत कर रहा हूं? क्या कोई और विकल्प है?
waitpid
के बीचptrace(PTRACE_ATTACH,…)
औरread
(एक संभव रेस स्थिति अन्यथा वहाँ)? क्या त्रुटिread
वापस आती है? क्या बच्चा अपनी मेमोरी मैपिंग के साथ कुछ अजीब कर रहा है - जैसे आप एक साधारण बच्चे के साथ अपना कोड आज़मा सकते हैंsleep
?