इस स्थिति में "टूटा हुआ पाइप" देखना दुर्लभ है, लेकिन सामान्य है।
जब आप चलाते हैं type rvm | head -1, तो बैश type rvmएक प्रक्रिया में, head -1दूसरे में निष्पादित होता है । 1 स्टडआउट typeएक पाइप के "राइट" छोर से जुड़ा हुआ है , head"रीड" एंड का स्टड है । दोनों प्रक्रियाएं एक ही समय में चलती हैं।
head -1प्रक्रिया stdin से (आम तौर पर 8 kB की मात्रा में) डेटा, (के अनुसार एक ही पंक्ति बाहर प्रिंट पढ़ता -1विकल्प), और बाहर निकलता है, जिससे पाइप के "पढ़ें" अंत को बंद करना पड़ा। चूंकि rvmफ़ंक्शन काफी लंबा है (बैश द्वारा पार्स और पुनर्निर्मित किए जाने के बाद लगभग 11 केबी), इसका मतलब यह है कि headबाहर निकलता है जबकि typeअभी भी कुछ केबी को बाहर लिखने के लिए डेटा है।
इस बिंदु पर, चूंकि typeएक पाइप को लिखने की कोशिश की जा रही है , जिसका दूसरा छोर बंद हो गया है - एक टूटी हुई पाइप - यह () फ़ंक्शन को शांत करता है जो ईपीआईपीई त्रुटि लौटाएगा, जिसका अनुवाद "ब्रोकन पाइप" के रूप में किया जाएगा। इस त्रुटि के अलावा, कर्नेल SIGPIPE सिग्नल को भी भेजता है type, जो डिफ़ॉल्ट रूप से प्रक्रिया को तुरंत मारता है।
(संवादात्मक गोले में संकेत बहुत उपयोगी है, क्योंकि अधिकांश उपयोगकर्ता नहीं चाहते हैं कि पहली प्रक्रिया चलती रहे और कहीं भी लिखने की कोशिश न करें। इस बीच, गैर-संवादात्मक सेवाएं SIGPIPE को अनदेखा करती हैं - यह लंबे समय तक चलने वाले डेमॉन के लिए अच्छा नहीं होगा। इतनी सरल त्रुटि पर मरना - तो वे त्रुटि कोड को बहुत उपयोगी पाते हैं।)
हालांकि, सिग्नल डिलीवरी 100% तत्काल नहीं है, और ऐसे मामले भी हो सकते हैं जहां ईपीआईपीई लिखते हैं और सिग्नल प्राप्त करने से पहले थोड़ी देर के लिए प्रक्रिया जारी रहती है। इस मामले में, typeअसफल लेखन को नोटिस करने के लिए पर्याप्त समय मिलता है, त्रुटि कोड का अनुवाद करें और यहां तक कि एसआईजीपीआईपीई द्वारा मारे जाने से पहले एक त्रुटि संदेश भी स्टेंडर को प्रिंट करें। (त्रुटि संदेश "-बैश: प्रकार:" कहता है, क्योंकि typeअपने आप ही बाश का एक अंतर्निहित कमांड है।)
मल्टी-सीपीयू सिस्टम पर यह अधिक सामान्य प्रतीत होता है, क्योंकि typeप्रक्रिया और कर्नेल का सिग्नल डिलीवरी कोड अलग-अलग कोर पर, शाब्दिक रूप से एक ही समय में चल सकता है।
typeजब यह राइट () फ़ंक्शन से ईपीआईपीई प्राप्त करता है, तो इस संदेश को बिलिन (बैश के स्रोत कोड) में तुरंत पैच करके निकालना संभव होगा ।
हालाँकि, इसके बारे में चिंतित होने के लिए कुछ भी नहीं है, और यह rvmकिसी भी तरह से आपकी स्थापना से संबंधित नहीं है ।