बैश: संकेतों को असीमित रूप से संभाल लें (कोई पृष्ठभूमि कार्य नहीं) - लिनक्स, बैश, संकेत

क्या बैश में संकेतों को असीमित रूप से संभालना संभव है?

मैं इसके बारे में जानता हूँ trap आदेश।जिस तरह से यह काम करता है वह यह है कि यह सिग्नल को संभालने से पहले मौजूदा कमांड को खत्म करने की प्रतीक्षा करता है। उस समय सिग्नल को संभालने का एकमात्र तरीका पृष्ठभूमि में वर्तमान कमांड को चलाने के लिए होता है।

आइए मान लें कि हम पृष्ठभूमि में हमारे आदेश को नहीं चला सकते हैं (उदाहरण के लिए क्योंकि हम stdin के माध्यम से कीबोर्ड इनपुट प्राप्त करने में सक्षम होना चाहते हैं), क्या स्क्रिप्ट को वितरित किए जाने पर संकेतों को संभालने का कोई तरीका है?

उत्तर:

उत्तर № 1 के लिए 1

यदि स्क्रिप्ट "अग्रभूमि में नहीं है तो सिग्नल को सिंक्रनाइज़ करना संभव नहीं है। बैश मैनपेज इस संबंध में बहुत स्पष्ट है:

यदि बैश एक कमांड को पूरा करने के लिए इंतजार कर रहा है और एक संकेत प्राप्त करता है जिसके लिए एक जाल सेट किया गया है, तो आदेश पूरा होने तक जाल निष्पादित नहीं किया जाएगा।

आपके वास्तविक मामले के आधार पर, यह हो सकता हैपृष्ठभूमि सिप्रोसेस में आपके संकेतों को वितरित करके, या स्क्रिप्ट को अग्रभूमि में रखते हुए और अपने आदेश में रूटिंग इनपुट रखकर उस पर काम करना संभव है। दोनों सुंदर contrived हैं।


संबंधित सवाल
सबसे लोकप्रिय