এই পরিস্থিতিতে "ভাঙা পাইপ" দেখা বিরল, তবে স্বাভাবিক।
আপনি যখন চালান type rvm | head -1
, বাশ type rvm
একটি প্রক্রিয়াতে চালিত হয় , head -1
অন্য একটিতে। 1 স্ট্যান্ডআউটটি পাইপেরtype
"লিখন" প্রান্তের সাথে, "পড়ুন" শেষের স্ট্যান্ডিনের সাথে যুক্ত । উভয় প্রক্রিয়া একই সময়ে চলমান।head
head -1
প্রক্রিয়া stdin থেকে (সাধারণত 8 কিলোবাইট অংশ) ডেটা (অনুযায়ী একটি একক লাইন আউট প্রিন্ট সার্চ -1
বিকল্প), এবং প্রস্থান করে, যার ফলে পাইপের "পড়া" শেষ বন্ধ করে দেওয়া হয়। যেহেতু rvm
ফাংশনটি বেশ দীর্ঘ (প্রায় 11 কেবি পার্স এবং ব্যাশ দ্বারা পুনর্নির্মাণের পরে), এর অর্থ এটি থেকে head
বেরিয়ে আসে যখন type
এখনও কিছু কেবি ডেটা লেখার জন্য রয়েছে।
এই মুহুর্তে, যেহেতু type
এমন কোনও পাইপে লেখার চেষ্টা করা হচ্ছে যার অন্য প্রান্তটি বন্ধ হয়ে গেছে - একটি ভাঙ্গা পাইপ - এটি যে রাইটিং () ফাংশনটি বন্ধ করেছে এটি একটি "EPIPE ত্রুটি ফিরে আসবে," ব্রোকেন পাইপ "হিসাবে অনুবাদ করা হবে। এই ত্রুটিটি ছাড়াও, কার্নেল এছাড়াও SIGPIPE সিগন্যাল প্রেরণ করে type
, যা ডিফল্টরূপে প্রক্রিয়াটিকে তত্ক্ষণাত্ হত্যা করে।
(ইন্টারেক্টিভ শেলগুলিতে সংকেতটি খুব কার্যকর, যেহেতু বেশিরভাগ ব্যবহারকারীরা প্রথম প্রক্রিয়াটি চালিয়ে যেতে এবং কোথাও লেখার চেষ্টা করতে চান না Meanwhile এদিকে, অ-ইন্টারেক্টিভ পরিষেবাগুলি SIGPIPE উপেক্ষা করে - এটি দীর্ঘকাল চলমান ডিমনটির পক্ষে ভাল হবে না) এমন একটি সাধারণ ত্রুটিতে মারা যান - সুতরাং তারা ত্রুটি কোডটি খুব দরকারী বলে মনে করে))
তবে, সংকেত বিতরণ তাত্ক্ষণিকভাবে 100% নয়, এবং এমন কিছু ক্ষেত্রেও দেখা যেতে পারে যেখানে লিখন () ইপিআইপিই ফেরত দেয় এবং সংকেত পাওয়ার আগে প্রক্রিয়াটি অল্প সময়ের জন্য চলতে থাকে। এই ক্ষেত্রে, type
ব্যর্থ লেখার লক্ষ্য অনুবাদ ত্রুটি কোড এবং এমনকি SIGPIPE নিহত হওয়ার আগে stderr হবে একটি ত্রুটির বার্তা মুদ্রণ করতে যথেষ্ট সময় পায়। (ত্রুটি বার্তাটি "-বাশ: টাইপ করুন:" যেহেতু type
বাশ নিজেই একটি অন্তর্নির্মিত কমান্ড)
এটি মাল্টি-সিপিইউ সিস্টেমে আরও সাধারণ বলে মনে হচ্ছে, যেহেতু type
প্রক্রিয়া এবং কার্নেলের সিগন্যাল বিতরণ কোডটি একই সাথে আক্ষরিকভাবে বিভিন্ন কোরে চলতে পারে।
type
রাইটিং () ফাংশন থেকে কোনও ইপিআইপিই পাওয়ার সাথে সাথে বিল্টিনকে (ব্যাশের সোর্স কোডে) প্যাচ করে এই বার্তাটি সরিয়ে ফেলা সম্ভব হবে ।
তবে এটি সম্পর্কে উদ্বিগ্ন হওয়ার কিছু নেই এবং এটি কোনওভাবেই আপনার rvm
ইনস্টলেশন সম্পর্কিত নয় ।