मेरे पास एक लाइव सीडी है जो लिनक्स में बूट करती है और एक छोटी बैश स्क्रिप्ट चलाती है। स्क्रिप्ट दूसरा प्रोग्राम खोजती है और चलाती है (जो आमतौर पर संकलित C ++ बाइनरी है)।
आप Ctrl+ दबाकर दूसरे कार्यक्रम को समाप्त करने में सक्षम होने वाले हैं C। ऐसा क्या होना चाहिए कि दूसरा प्रोग्राम रुक जाए और बैश स्क्रिप्ट क्लीनअप चलती रहे। वास्तव में क्या होता है कि मुख्य एप्लिकेशन और बैश स्क्रिप्ट दोनों समाप्त हो जाते हैं। जो एक समस्या है।
इसलिए मैंने trap
बिल्ट का उपयोग बैश को SIGINT को नजरअंदाज करने के लिए कहा। और अब C ++ एप्लिकेशन को Ctrl+ Cसमाप्त करता है, लेकिन बैश अपना रन जारी रखता है। महान।
अरे हाँ ... कभी-कभी "दूसरी एप्लीकेशन" एक और बैश स्क्रिप्ट है। और उस मामले में, Ctrl+ Cअब कुछ भी नहीं करता है ।
जाहिर है कि यह कैसे काम करता है सामान की मेरी समझ गलत है ... मैं जो प्रक्रिया SIGINT जब उपयोगकर्ता प्रेस हो जाता है किस प्रकार नियंत्रित कर Ctrl+ C? मैं केवल एक विशिष्ट प्रक्रिया के लिए इस संकेत को निर्देशित करना चाहता हूं ।
set -m
।setsid
जब आप बच्चे को चलाते हैं तो हर बार इस्तेमाल करने की तुलना में यह थोड़ा साफ और सरल होता है ।