কোনও প্রক্রিয়া যখন একটি পাইপ (নাম দেওয়া হয় বা না হয়) বা সকেট টাইপ করা সকেট জিপিআরএমে লেখার চেষ্টা করে যখন কোনও পাঠক নেই।
এটা সাধারণত আচরণ চেয়েছিল। একটি সাধারণ উদাহরণ হল:
find . | head -n 1
আপনি find
একবারে head
বন্ধ হয়ে যাওয়ার পরে চালিয়ে যেতে চান না (এবং তারপরে কেবল পাইপটিতে পড়ার জন্য কেবলমাত্র ফাইল বর্ণনাকারী উন্মুক্ত করে দেওয়া হয়েছে)।
yes
কমান্ড সাধারণত যে সংকেত বিনষ্ট উপর নির্ভর করে।
yes | some-command
কিছু কমান্ড শেষ না হওয়া অবধি "y" লিখবে Will
মনে রাখবেন যে কমান্ডগুলি প্রস্থান করার সময় কেবল এটিই নয়, যখন সমস্ত পাঠক পাইপটিতে তাদের পড়া বন্ধ রাখবেন। ইন:
yes | ( sleep 1; exec <&-; ps -fC yes)
1 2 1 0
পাইপ থেকে ১ (সাবশেল), তারপরে ২ (সাবশেল + স্লিপ), তারপরে ১ (সাবশেল) থাকবে এবং তারপরে স্টাইলটি স্পষ্টভাবে বন্ধ করে দেওয়ার পরে পাইপটি থেকে 0 ডিডি পড়তে yes
হবে এবং তারপরেই একটি সাইনপাইপ পাবেন।
উপরে, বেশিরভাগ শাঁস একটি ব্যবহার করে pipe(2)
কিছুক্ষণ ksh93
ব্যবহার করে socketpair(2)
তবে আচরণটি সেই ক্ষেত্রে একই রকম।
একটি প্রক্রিয়া SIGPIPE, লিখন পদ্ধতি কল উপেক্ষা করে যখন (সাধারণত write
, কিন্তু হতে পারে pwrite
, send
, splice
...) একটি সঙ্গে আয় EPIPE
ত্রুটি। সুতরাং ভাঙা পাইপটি ম্যানুয়ালি হ্যান্ডেল করতে ইচ্ছুক প্রক্রিয়াগুলি সাধারণত SIGPIPE উপেক্ষা করে একটি EPIPE ত্রুটির উপর পদক্ষেপ নিতে পারে।