2015-05-16 11 views
20

क्या जंग 1.0 में निकास कोड लौटने का कोई तरीका है?प्रोग्राम को निकास कोड से साफ तरीके से कैसे समाप्त करें?

मैं env::set_exit_status(exit_code); की कोशिश की है, लेकिन यह एक संकलक त्रुटि उत्पन्न करता है।

वहाँ भी इस सवाल यह है: Exit Rust program early जो समान है, लेकिन मामले के बारे में पूछता है जब प्रक्रिया जल्दी से बाहर निकल गया हो गया है।


संपादित करें: मैं आदि एक समाधान है कि भी इस प्रक्रिया ढेर को साफ़ रखने के लिए, विनाशकर्ता फोन की अनुमति देगा,

+2

@static_rtti आप आगे की [Levans 'जवाब] (http://stackoverflow.com/a/30285110/155423) अनुपयुक्त है क्या हिस्सा व्याख्या कर सकते हैं? * निश्चित रूप से एक सिस्टम प्रोग्रामिंग भाषा ... * याद रखें, कि जंग का उपयोग उन वातावरणों में भी किया जाना चाहिए जहां कोई लॉन्चर प्रक्रिया नहीं है (जैसे कर्नेल)। – Shepmaster

+0

मैंने इसे काफी अच्छी तरह से नहीं पढ़ा था, ऐसा लगता है कि मैं क्या चाहता हूं। –

उत्तर

8

std::process::exit की तलाश में हूँ निर्दिष्ट बाहर निकलने के कोड के साथ कार्यक्रम बाहर निकालता है।

fn main() { 
    let exit_code = real_main(); 
    std::process::exit(exit_code); 
} 

fn real_main() -> i32 { 
    // the real program here 
} 

इस तरह, सभी अपने कार्यक्रम की वस्तुओं में होगा:

+1

दुर्भाग्यवश यह साफ नहीं करता है और विनाशकों को बुलाता है। मैं इसका उल्लेख करने के लिए सवाल में संशोधन करूंगा। –

+0

किसी भी कारण से आपको साफ होने की आवश्यकता क्यों है? क्या आपके पास विनाशक हैं जो "रोचक" सामान करते हैं? यदि नहीं, तो ऑपरेटिंग सिस्टम को प्रक्रिया को साफ करने के लिए अक्सर पर्याप्त अच्छा होता है। –

+0

मुझे लगता है कि मैं सी में 'वापसी exit_code;' के लिए प्रत्यक्ष प्रतिस्थापन की तलाश में हूं। मैं डिस्क पर फ्लश करने की संभावना से बचना चाहता हूं यदि संभव हो तो। –

26

बिल्डिंग @FrancisGagné 's answer की टिप्पणियों पर, यदि आप सी return exit_code के समकक्ष के लिए खोज रहे हैं, आप कृत्रिम रूप से यह इस तरह से निर्माण कर सकते हैं real_main() फ़ंक्शन का दायरा, और आप सुरक्षित रूप से return exit_code;main में सुरक्षित रूप से उपयोग कर सकते हैं जबकि अभी भी सभी विनाशक ठीक से चल रहे हैं।

यह अधिक std::env::set_exit_status(..) उपयोग करने के लिए उपयुक्त होगा, लेकिन इस समारोह स्थिर जंग में अभी तक नहीं है।

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