সাধারণত, stdout
লাইন-বাফার হয়। অন্য কথায়, যতক্ষণ আপনারprintf
যুক্তিটি একটি নতুন লাইন দিয়ে শেষ হয়, আপনি লাইনটি তাত্ক্ষণিকভাবে মুদ্রণের জন্য আশা করতে পারেন। পুনর্নির্দেশের জন্য পাইপ ব্যবহার করার সময় এটি ধরা পড়ে নাtee
।
আমার কাছে একটি সি ++ প্রোগ্রাম রয়েছে a
, যা সর্বদা, স্ট্রিংগুলি আউটপুট করে\n
-terminated, এর stdout
।
যখন এটি নিজেই চালিত হয় ( ./a
), প্রত্যাশার মতো সবকিছু সঠিকভাবে এবং সঠিক সময়ে প্রিন্ট করে। তবে, যদি আমি এটিতে পাইপ tee
(./a | tee output.txt
) এটি প্রস্থান না করা অবধি কিছু মুদ্রণ করে না, যা ব্যবহারের উদ্দেশ্যকে পরাস্ত করে tee
।
আমি জানি যে আমি fflush(stdout)
সি ++ প্রোগ্রামে প্রতিটি মুদ্রণ অপারেশনের পরে একটি যুক্ত করে এটি ঠিক করতে পারতাম । তবে কি কোনও ক্লিনার, সহজ উপায় আছে? আমি কি চালাতে পারি এমন কোনও কমান্ড রয়েছে, উদাহরণস্বরূপ, এটি stdout
পাইপ ব্যবহার করার পরেও লাইন-বাফার হতে বাধ্য করবে ?
expect
নিজেকে সংকলনunbuffer
করতে হয়েছিল।