আমার একটি প্রোগ্রাম রয়েছে যা একটি প্রদত্ত স্ট্রিমের EOF পড়ার পরে স্বয়ংক্রিয়ভাবে প্রস্থান করে (নিম্নলিখিত ক্ষেত্রে, স্টিডিন) din
এখন আমি একটি শেল স্ক্রিপ্ট তৈরি করতে চাই, যা একটি নামযুক্ত পাইপ তৈরি করে এবং প্রোগ্রামটির স্টিডিনকে এটির সাথে সংযুক্ত করতে পারে। তারপরে স্ক্রিপ্টটি পাইপটিতে বেশ কয়েকবার ব্যবহার করে echo
এবং cat
(এবং অন্যান্য সরঞ্জামগুলি যা স্বয়ংক্রিয়ভাবে একটি ইওফ উত্পন্ন করে যখন তারা বের হয়)। আমি যে সমস্যার মুখোমুখি হচ্ছি echo
তা হ'ল প্রথম কাজটি শেষ হয়ে গেলে এটি পাইপকে একটি ইওএফ প্রেরণ করে প্রোগ্রামটি প্রস্থান করে। যদি আমি এর মতো কিছু ব্যবহার করি tail -f
তবে আমি প্রোগ্রামটি ছাড়ার ইচ্ছায় আমি কোনও ইওএফ পাঠাতে পারি না। আমি ভারসাম্যযুক্ত সমাধান নিয়ে গবেষণা করছি কিন্তু কোন ফলসই হয়নি।
ইওএফগুলি কীভাবে প্রতিরোধ করা যায় এবং কীভাবে ম্যানুয়ালি একটি ইওএফ পাঠাতে হয় উভয়ই আমি ইতিমধ্যে খুঁজে পেয়েছি তবে আমি সেগুলি সংহত করতে পারি না। কোন ইঙ্গিত আছে?
#!/bin/sh
mkfifo P
program < P & : # Run in background
# < P tail -n +1 -f | program
echo some stuff > P # Prevent EOF?
cat more_stuff.txt > P # Prevent EOF?
send_eof > P # How can I do this?
# fg
exec 3>P
কারণেই বাশ ঝুলবে কেন?