ধরে নেওয়া যাক আপনার নীচের মতো পাইপলাইন রয়েছে:
$ a | b
যদি b
স্টিডিন প্রসেসিং বন্ধ করে দেয়, কিছুক্ষণ পরে পাইপটি ভরে যায় এবং লেখার পরে a
তার স্টাডাউট অবধি ব্লক হয়ে যায় (হয় না b
আবার প্রক্রিয়াজাতকরণ শুরু হয় না মারা যায়)।
যদি আমি এটি এড়াতে চাইতাম তবে আমি এর চেয়ে বড় পাইপ (বা আরও সহজভাবে buffer(1)
) ব্যবহার করতে প্ররোচিত হতে পারি :
$ a | buffer | b
এটি কেবল আমাকে আরও সময় কিনে ফেলবে, তবে শেষ a
পর্যন্ত থামবে।
আমি যেটি পছন্দ করতে চাই (খুব নির্দিষ্ট দৃশ্যের জন্য যা আমি সম্বোধন করছি) হ'ল একটি "ফুটো" পাইপ যা পূর্ণ হয়ে গেলে কিছুটা ডেটা (আদর্শভাবে, লাইন বাই লাইন) a
অবিরত রাখতে দেয় প্রক্রিয়াজাতকরণ (আপনি সম্ভবত ধারণা করতে পারেন যে, পাইপে প্রবাহিত ডেটা ব্যয়যোগ্য, অর্থাত প্রক্রিয়াজাতকরণ করা ডেটা ব্লকিং ছাড়াই চালানো সক্ষমের b
চেয়ে কম গুরুত্বপূর্ণ a
)।
এটির সংক্ষেপে আমি একটি আবদ্ধ, ফুটো বাফারের মতো কিছু পেতে চাই:
$ a | leakybuffer | b
আমি সম্ভবত এটি সহজেই কোনও ভাষায় প্রয়োগ করতে পারি, আমি কেবল ভাবছিলাম যে "ব্যবহারের জন্য প্রস্তুত" (বা ব্যাশ ওয়ান-লাইনারের মতো কিছু) আমি অনুপস্থিত রয়েছি কিনা।
দ্রষ্টব্য: উদাহরণগুলিতে আমি নিয়মিত পাইপ ব্যবহার করছি তবে নামটি পাইপগুলিতে প্রশ্নটি সমানভাবে প্রযোজ্য
আমি নীচের উত্তরটি প্রদান করার সময়, আমি লিকব্যুফার কমান্ডটি বাস্তবায়নেরও সিদ্ধান্ত নিয়েছি কারণ নীচের সহজ সমাধানটির কিছু সীমাবদ্ধতা ছিল: https://github.com/CAFxX/leakybuffer