আপনার প্রশ্নটি সম্পর্কে যা কেবলমাত্র ভুল হিসাবে দেখা যায় তা হ'ল আপনি
এ প্রথমে দৌড়াবে, তারপরে বি পেয়ে যাবে এ st
আসলে, উভয় প্রোগ্রাম একই সময়ে শুরু হবে। B
এটি যখন পড়ার চেষ্টা করে তখন কোনও ইনপুট না থাকলে, পড়ার ইনপুট না পাওয়া পর্যন্ত এটি ব্লক হয়ে যাবে। তেমনি, যদি কেউ আউটপুট পড়েন নাA
পর্যন্ত তার লেখাগুলি ব্লক হয়ে যাবে (এর কিছু পাইপ দিয়ে বাফার করবে)।
পাইপলাইনে অংশ নেওয়া প্রক্রিয়াগুলি সিঙ্ক্রোনাইজ করার একমাত্র বিষয় হ'ল I / O, অর্থাৎ পাইপ জুড়ে পড়া এবং লেখা। যদি কোনও লেখা বা পঠন ঘটে না, তবে দুটি প্রক্রিয়া একে অপরের থেকে সম্পূর্ণ স্বাধীনভাবে চলবে run যদি একজন অন্যের পড়া বা লেখা উপেক্ষা করে তবে অবহেলিত প্রক্রিয়াটি অবরুদ্ধ হবে এবং শেষ পর্যন্ত এ দ্বারা হত্যা করা হবেSIGPIPE
সিগন্যালের (যদি লেখা থাকে) বা অন্য প্রক্রিয়াটি সমাপ্ত হলে তার স্ট্যান্ডার্ড ইনপুট স্ট্রিমে (পড়ার ক্ষেত্রে) ফাইলের একটি শেষ শর্ত পেয়ে যায় ।
মূর্খ বর্ণনার উপায় A | B
হ'ল এটি একটি পাইপলাইন যা দুটি প্রোগ্রাম ধারণ করে containing প্রথম প্রোগ্রাম থেকে স্ট্যান্ডার্ড আউটপুট উত্পাদিত আউটপুট দ্বিতীয় দ্বারা স্ট্যান্ডার্ড ইনপুট পড়ার জন্য উপলব্ধ ("[আউটপুট] A
পাইপ করা হয় [ইনপুট] B
"))। শেলটি এটি হওয়ার জন্য প্রয়োজনীয় নদীর গভীরতানির্ণয়টি করে।
আপনি যদি "ভোক্তা" এবং "প্রযোজক" শব্দটি ব্যবহার করতে চান তবে আমি মনে করি এটিও ঠিক আছে।
এগুলি সি তে লিখিত প্রোগ্রামগুলি সত্য যে প্রাসঙ্গিক নয়। এটি লিনাক্স, ম্যাকোস, ওপেনবিএসডি বা এআইএক্স প্রাসঙ্গিক নয়।