पर qtcreator द्वारा भेजे गए सिग्नल मैं लिनक्स पर काम कर रहा हूं और मुझे एहसास हुआ कि जब मैं इसे क्यूटी निर्माता आईडीई पर "स्टॉप" बटन से बंद करता हूं तो मेरा एप्लिकेशन डिमन प्रक्रियाओं के पीछे छोड़ रहा था। मैं इन मामलों को संभालना चाहता हूं ताकि जब मैं मुख्य विंडो बंद करूँ तो एप्लिकेशन उसी तरह बंद हो जाए। हैंडलर लिखने के लिए, मुझे यह जानने की ज़रूरत है कि यह कौन से संकेतों से मेल खाता है।"रोकें"
"रोकें"
उत्तर
QtCreator के कोड में खोदने पर, मैं देख सकता हूं कि QtCreator आपके ऐप को लॉन्च करने के लिए आंतरिक रूप से एक QProcess का उपयोग करता है। लाल "स्टॉप" बटन ApplicationLauncher::stop()
से जुड़ा हुआ है, जो आपकी प्रक्रिया को दो तरीकों से समाप्त करता है, भले ही यह एक जीयूआई ऐप या कंसोल ऐप है, लेकिन दोनों मामलों में, परिणाम लिनक्स पर समान होता है।
एक जीयूआई ऐप के लिए, ApplicationLauncher
QProcess::terminate()
पर कॉल करता है, जो बदले में आपके डिमन को सिगरेट (लिनक्स पर) सिग्नल भेजता है। इसके बाद यह 1 सेकंड के लिए (waitForFinished()
के साथ) प्रतीक्षा करता है, और यदि डिमन ने तब तक नहीं छोड़ा है, तो यह SIGKILL
भेजकर QProcess::kill()
पर कॉल करता है।
एक कंसोल ऐप के लिए, ApplicationLauncher
ConsoleProcess
उपयोगिता वर्ग को समाप्त करने का प्रतिनिधि करता है। लिनक्स पर, ConsoleProcess::stop()
एक जीयूआई ऐप के लिए ApplicationLauncher
के समान कार्य करेगा, जो पहले SIGTERM
भेज रहा है, फिर 1 सेकंड की प्रतीक्षा कर रहा है, और SIGKILL
भेज रहा है, अगर इसे अभी तक समाप्त नहीं किया गया है।
आप QtCreator यहां से प्रासंगिक कोड मिलेगा:
साफ प्रतिक्रिया फ्रेड। – UmNyobe
@Fred तो प्रासंगिक कोड लिंक एप्लिकेशन को "चलाना" पर लागू होते हैं - हालांकि निश्चित रूप से ये ब्लॉक अप्रासंगिक होते हैं जब कोई एप्लिकेशन "डिबगिंग" होता है। कोई विचार जहां संबंधित स्टॉप/मार ऑपरेशन डीबगिंग के लिए हैं? शायद यह किसी भी तरह से इस हत्या टाइमआउट कार्रवाई करने के लिए gdb निर्देशित करता है? – dtmland
लघु संस्करण: आप
लांग संस्करण नहीं कर सकते हैं:
आप का उपयोग कर की कोशिश कर सकते:
http://doc.qt.digia.com/qt/qcoreapplication.html#aboutToQuit
लेकिन इस अपेक्षा के अनुरूप काम नहीं होगा। यदि कोई प्रक्रिया बल द्वारा समाप्त की जाती है (आईडीईई में स्टॉप क्या होता है, तो मुझे लगता है कि विंडोज http://msdn.microsoft.com/en-gb/library/windows/desktop/ms686714(v=vs.85).aspx पर टर्मिनेटप्रोसेस() का उपयोग करके मुझे लगता है कि प्रक्रिया को जो कुछ भी निष्पादित किया जा रहा है उसके बीच तुरंत मार दिया जाता है। अकेले क्यूटी से इन मामलों को संभालना संभव नहीं है।
- 1. रोकें
- 2. सोलारिस जीडीबी: कैसे रोकें रोकें?
- 3. बल रोकें या त्रुटि पर रोकें
- 4. समांतर। Foreach C# रोकें और रोकें फंक्शन?
- 5. रोकें विम
- 6. रोकें बैश
- 7. रोकें निष्पादन
- 8. रोकें jQuery
- 9. रोकें NSOperation
- 10. Android_Chronometer रोकें
- 11. अक्षम 'रोकें'
- 12. रोकें WPF
- 13. रोकें SWT
- 14. रोकें चयन +
- 15. विशिष्ट AJAX/XmlHttpRequests लॉगिंग से अपाचे को रोकें (रोकें)?
- 16. रोकें रेल परीक्षण
- 17. सास रोकें मूल्य
- 18. फ़ॉर्म को कैसे रोकें
- 19. WP7 सूची बॉक्स रोकें
- 20. रोकें कर्सर बदलें
- 21. डुप्लिकेट अजाक्स सबमिशन रोकें?
- 22. रोकें ट्विटर वहाँ
- 23. यूट्यूब इफ्रैम वीडियो रोकें
- 24. नेट: XmlDocument.LoadXml रोकें DTD
- 25. रोकें पल्सेट jQuery प्रभाव
- 26. गिट: गिट पुश रोकें
- 27. रोकें इंटेलिजेंस डिस्प्ले टाइमआउट
- 28. कंसोल C++ में रोकें?
- 29. subprocess को रोकें। पाइथन
- 30. रोकें प्रिंट() आर
कि SIGTERM होगा मुझे लगता है। – sashoalm