वहाँ समाप्ति पर कोड को चलाने के लिए किसी तरह किस तरह समाप्ति (असामान्य, सामान्य, न आया हुआ अपवाद आदि) है, कोई फर्क नहीं पड़ता? मैं अपने वास्तव में जावा में संभव है, लेकिन यह सी ++ में भी संभव है? मैं एक विंडोज वातावरण मान रहा हूँ।शटडाउन हुक C++
उत्तर
नहीं - यदि किसी TerminateProcess
invokes, अपनी प्रक्रिया आगे adieu बिना (विशेष रूप से) में किसी भी अधिक कोड को चलाने के लिए कोई मौका बिना नष्ट हो जाएगा, और बंद करने की प्रक्रिया।
यह सही जवाब है; तथापि के रूप में अन्य उत्तर, आप सेटअप एक निकास-हैंडलर atexit (का उपयोग करते हुए ') कर सकते हैं' और आप 'संकेत()' का उपयोग कर सबसे संकेत पकड़ कर सकते हैं में से कुछ ने संकेत दिया - लेकिन आप कोई भी कदम कभी नहीं ले जा सकते हैं यदि किसी समाप्ति बलों (कि लिनक्स पर मारने-9 किया जाएगा, और संकेत 9 uncatchable है) – Soren
धन्यवाद, वास्तव में मैं कि answere – Paranaix
भी से डर लगता था: ज़ोर(), गर्भपात(), समाप्त() –
सामान्य समापन applciation के लिए मेरा सुझाव है
atexit()
एक अच्छा समस्या दृष्टिकोण रास्ता सी ++ आरए II मुहावरा है, जो यहाँ का मतलब है कि सफाई के संचालन एक वस्तु का नाशक में रखा जा सकता है, यानी
class ShutdownHook {
~ShutdownHook() {
// exit handler code
}
};
int main() {
ShutdownHook h;
//...
}
उपयोग कर रहा है ऐस पुस्तकालय में Object Lifetime Manager देखें। लिंक किए गए दस्तावेज़ पर, वे atexit
फ़ंक्शन के बारे में भी चर्चा करते हैं।
से ऊपर मैं मान लिया है कि बाहर निकलने के "सामान्य है ", यानी उदाहरण के माध्यम से नहीं 'निकास() 'कॉल, या सेगमेंटेशन गलती के कारण, आदि –
सावधान। यह काम करने की गारंटी नहीं है। यदि कोई अपवाद मुख्य() से बच निकलता है तो कार्यान्वयन में यह परिभाषित किया जाता है कि स्टैक अवांछित है या नहीं। इस प्रकार इस काम की गारंटी के लिए आपको मुख्य() में सभी अपवादों को पकड़ना होगा (कोशिश कोड में अपना कोड डालना)। आपको कुछ भी करने की ज़रूरत नहीं है, बस अपवाद को फिर से उखाड़ फेंक दें। –
नहीं है; ऐसे संकेत हैं जिन्हें लिनक्स पर किल की तरह संभालने के लिए डिज़ाइन नहीं किया गया है।
ये सिग्नल एक प्रोग्राम को समाप्त करने के लिए डिज़ाइन किए गए हैं जो सभी मेमोरी, या सीपीयू, या कुछ अन्य संसाधनों का उपभोग कर चुके हैं, और कंप्यूटर को ऐसे राज्य में छोड़ दिया है जो एक हैंडलर फ़ंक्शन चलाने में मुश्किल बनाता है।
- 1. जावा शटडाउन हुक थ्रेड
- 2. मैं शटडाउन हुक में स्विंग का उपयोग कैसे करूं?
- 3. शटडाउन
- 4. कर्मचारी शटडाउन
- 5. Cygwin CTRL-C (सिग्नल अवरोध) ठीक से काम नहीं - JVM शटडाउन हुक्स
- 6. शटडाउन हुक्स बुरा तोड़ जब
- 7. पायथन - विंडोज शटडाउन घटनाक्रम
- 8. मारने पर Emacsclient हुक
- 9. जावा- शटडाउन हुक में काम करने के लिए लॉगर कैसे प्राप्त करें?
- 10. स्प्रिंग 3 में शटडाउन हुक पंजीकृत करने का सही तरीका क्या है?
- 11. एक्लिप्स आरसीपी एप्लिकेशन के लिए शटडाउन हुक जोड़ने का सही तरीका क्या है?
- 12. कनेक्शन पूल शटडाउन एंड्रॉइड
- 13. क्वार्ट्ज शेड्यूलर शटडाउन
- 14. हबेस क्षेत्र सर्वर शटडाउन
- 15. सी #/नेट सॉकेट। शटडाउन
- 16. एंड्रॉइड में शटडाउन घटनाक्रम
- 17. हुक
- 18. गिटहब: एंटरप्राइज़ पोस्ट-हुक हुक
- 19. पंजीकृत शटडाउन फ़ंक्शंस की सूची
- 20. मैं C#
- 21. एक और वैश्विक हुक मेरे वैश्विक हुक
- 22. गिट हुक: क्या क्लोन हुक है?
- 23. अद्यतन हुक
- 24. precommit हुक
- 25. आरएसपीईसी हुक
- 26. हुक प्रक्रिया
- 27. सबवर्सन हुक
- 28. गिट हुक
- 29. जेवीएम: क्या यह पता लगाना संभव है कि शटडाउन हुक में ओओएम के कारण प्रक्रिया बंद हो रही है?
- 30. C/C++
जावा में यह संभव नहीं है - भाषा के बावजूद सभी प्रक्रियाएं लिनक्स (और विंडोज़ के समतुल्य) पर सिग्नल-9 नहीं पकड़ सकती हैं या उस सिग्नल आने पर कोई कोड चलाते हैं – Soren
जैसा कि @ ड्रेक ने सुझाव दिया था, मैं [ atexit] (http://www.cplusplus.com/reference/cstdlib/atexit/)। –