क्या Ctrl + सी जावा कमांड-लाइन एप्लिकेशन में सिग्नल करना संभव है? मैं कार्यक्रम को समाप्त करने से पहले कुछ संसाधनों को साफ करना चाहता हूं।जावा में Ctrl + C पकड़ना
उत्तर
आप वीएम जो चलाने हो जाता है जब भी वीएम बंद हो जाता है के लिए एक shutdown hook संलग्न कर सकते हैं:
कार्यक्रम:
जावा आभासी मशीन नीचे जवाब में घटनाओं के दो प्रकार के लिए बन्द हो जाता है सामान्य रूप से बाहर निकलता है, जब अंतिम गैर-डिमन थ्रेड निकलता है या जब बाहर निकलें (समतुल्य, System.exit) विधि का आह्वान किया जाता है, या
गुण यूजर मशीन को उपयोगकर्ता इंटरप्ट के जवाब में समाप्त कर दिया गया है, जैसे टाइपिंग Ctrl + सी, या सिस्टम लॉगऑफ या सिस्टम शट डाउन जैसे सिस्टम-वाइड इवेंट।
धागे के रूप शटडाउन हुक, कई नियमों का पालन करना है, हालांकि, इसलिए किसी भी समस्याओं से बचने के ध्यान से जुड़ा हुआ दस्तावेज़ पढ़ें है आप गुजरती हैं। इसमें थ्रेड-सुरक्षा, थ्रेड की त्वरित समाप्ति आदि शामिल हैं।
इसके अलावा, जैसा कि कमेंटर जेस्पर बताते हैं, शटडाउन हुक वीएम के सामान्य शट डाउन पर चलाने की गारंटी है, लेकिन अगर वीएम प्रक्रिया जबरन समाप्त हो जाती है तो वे ' टी। यह तब हो सकता है जब मूल कोड खराब हो या यदि आप जबरन प्रक्रिया को मार दें (kill -9
, taskkill /f
)।
लेकिन उन परिदृश्यों में सभी दांव किसी भी तरह से बंद हैं, इसलिए मैं इस पर बहुत अधिक विचार बर्बाद नहीं करता।
...
Runtime.getRuntime().addShutdownHook(new Thread() {
public void run() {
try {
Thread.sleep(200);
System.out.println("Shouting down ...");
//some cleaning up code...
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
आपका उदाहरण रास्पबेरीपीआई विशिष्ट है ('सॉफ्टपॉम', 'जीपीओओ')। आप उन विधि कॉल को छोड़ना चाह सकते हैं। – harpun
- 1. कैसे CTRL-C जावा प्रोग्राम
- 2. Ctrl-C
- 3. CTRL + C/CTRL + V ग्रहण
- 4. जावा हैंडल सिस्टम इंटरप्ट्स को Ctrl + C
- 5. क्यूप्लिकेशंस: Ctrl-C
- 6. Ctrl-c ने सिगविन
- 7. Ctrl-C PyQt
- 8. जावा त्रुटियों को पकड़ना
- 9. CTRL + C साझा-पुस्तकालय अजगर
- 10. Ctrl-c i.e. कीबोर्ड Pyteron
- 11. लिनक्स जैसा Ctrl-C (कीबोर्डइंटरप्ट)?
- 12. हास्केल में Ctrl-C हैंडलर कैसे लिखें?
- 13. एक पाठ बॉक्स में Ctrl + C पकड़ने
- 14. डार्ट कंसोल एप्लिकेशन में Ctrl + c
- 15. जावा में स्क्रीन प्रिंट को पकड़ना
- 16. जावा: जावा कंसोल एप्लिकेशन में Ctrl-C को अक्षम करना संभव है?
- 17. PHP सीएलआई: Ctrl-C कमांड को संभालना?
- 18. CTRL + C सर्वर पर ध्यान नहीं दिया
- 19. मार CTRL + C कार्यक्रम बर्खास्त GDB
- 20. एक बहुप्रचारित प्रोग्राम में SIGINT को पकड़ना
- 21. मैं ctrl + c को C# में किसी प्रक्रिया में कैसे भेजूं?
- 22. क्रोम में Ctrl + S preventDefault
- 23. जावा में मेमोरी अपवाद को पकड़ना संभव है?
- 24. जावा ईई वेब ऐप्स में हर अपवाद को पकड़ना
- 25. क्या इंटेलिजे आईडीईए में 'Ctrl` + `K`,` Ctrl` + `D` समतुल्य है?
- 26. भेजा जा रहा है SIGINT (Ctrl-C) ग्रहण कंसोल
- 27. "Ctrl + C" बटन दबाए गए हैंडल सी # कंसोल ऐप
- 28. साइगविन + कंसोल 2 ctrl-c कीबोर्ड काम नहीं कर रहा
- 29. मैं ctrl-c ईवेंट कैसे पकड़ सकता हूं? (सी ++)
- 30. Ctrl-C कैसे एक बाल प्रक्रिया को समाप्त करता है?
खबरदार बंद हुक सभी परिस्थितियों में चलने की गारंटी नहीं कर रहे हैं कि; ऐसी परिस्थितियां हो सकती हैं जहां वे नहीं चल रहे हैं, इसलिए अपने प्रोग्राम की सही कार्यप्रणाली को शटडाउन हुक में जो भी करते हैं उस पर निर्भर न करें। – Jesper
वे तब नहीं चल रहे हैं जब प्रक्रिया को मजबूती से समाप्त कर दिया जाता है ('टर्मिनेट प्रोसेस()' या 'सिगकिल') लेकिन यह सामान्य ऑपरेशन के बाहर है और चूंकि Ctrl + C पहले ही शटडाउन हुक द्वारा कवर किया गया है, इसलिए इसका उपयोग सुरक्षित है। यदि ओएस वास्तव में आपकी प्रक्रिया को समाप्त करता है तो आप बहुत कुछ नहीं कर सकते हैं। – Joey
अगर मैं 'मार' निष्पादित करता हूं (एक टीईआरएम सिग्नल भेज रहा हूं), तो क्या इसे शटडाउन हुक में पकड़ा जाएगा? (ध्यान दें कि यह 'kill -9' जैसा नहीं है जिसे मैं ऊपर से समझता हूं कि यह हुक में पकड़ा नहीं जाएगा।) – ADTC